- 浏览: 148216 次
- 性别:
- 来自: 武汉
文章分类
最新评论
-
flyingcatjj:
很适合我这种刚接触的
myeclipse xfire 开发webservice实例 -
tangzlboy:
非常好,非常详细,非常中用。
linux入门 -
yzz9i:
楼主说的很是详细。
myeclipse xfire 开发webservice实例 -
zqx888191:
很再理阿!
老程序员的教诲 -
simplecat123:
...
SQLite数据读取
组件关联 什么是组件关联呢?比如说一个用户,它的名称,有一个中文名,一个英文名 它有两个名称,相对于名称与用户来说 这是什么关系呢,一个用户多个名称 当然 是一对多的关系了,我们设计名称这个属性的时候,这时我们可以把名称设计为 一个实体类 Name 那么这个实体类就相对于用户名称来说,这个实体类就是组件了,那么用户名称与用户的关系,我们就称作 组件关联关系 平常我们设计关联的时候,比如说员工与部门,都是两张表的,一张员工表,一张部门表,当前我们不想把这个用户名称 与用户设计为两张表,怎么办呢?可以这样来做,可以把用户名称看成是一个组件,并且是作为用户的一个实体属性 现在就得设计两个s实体了,一个用户名称实体 这个用户名称实体存在两个属性 一个英文名 一个中文名 用户实体就是 一个用户id 用户名称(用户名称实体) 生日 我们不想把用户名称和用户设计为两张表,这时我们只需要在用户的映射文件 中引入组件这个节点 看component class是指定实体类 <component name=”name” class=”com.test.hibernate.domain.Name”> <property name=”yingwenname”/> <property name=”zhongwenname”/> </component> 下面我们来看一个完整的例子 用户名称实体 package dao.service; public class Name { private String firstName; private String lastName; public String getFirstName() { return firstName; } public void setFirstName(String firstName) { this.firstName = firstName; } public String getLastName() { return lastName; } public void setLastName(String lastName) { this.lastName = lastName; } } 用户实体 User package dao.service; import java.util.Date; public class User { private int id; private Name name; private Date birthday; public int getId() { return id; } public void setId(int id) { this.id = id; } public Name getName() { return name; } public void setName(Name name) { this.name = name; } public Date getBirthday() { return birthday; } public void setBirthday(Date birthday) { this.birthday = birthday; } } 映射文件 <?xml version="1.0"?> <!DOCTYPE hibernate-mapping PUBLIC "-//Hibernate/Hibernate Mapping DTD 3.0//EN" "http://hibernate.sourceforge.net/hibernate-mapping-3.0.dtd"> <hibernate-mapping package="dao.service"> <class name="User"> <id name="id"> <generator class="native"/> </id> <!-- <property name="name"/> --> <component name="name"> <property name="firstName" column="frist_name"/> <property name="lastName" column="last_name"/> </component> <property name="birthday"/> </class> </hibernate-mapping> 测试类 package dao.test; import java.util.Date; import java.util.List; import org.hibernate.Criteria; import org.hibernate.HibernateException; import org.hibernate.Query; import org.hibernate.Session; import org.hibernate.SessionFactory; import org.hibernate.Transaction; import org.hibernate.cfg.Configuration; import org.hibernate.criterion.Restrictions; import dao.service.Name; import dao.service.User; import dao.util.HibernateUtil; public class Base { /** * @param args */ public static void main(String[] args) { // TODO Auto-generated method stub //对hibernate进行初始化操作 // Configuration ctf=new Configuration(); // ctf.configure(); // //获取连接工厂 // SessionFactory sf=ctf.buildSessionFactory(); // //获取连接对象 // Session s=sf.openSession(); // Transaction tx=s.beginTransaction(); User user=new User(); user.setBirthday(new Date()); Name n=new Name(); n.setFirstName("firstName"); n.setLastName("lastName"); user.setName(n); addUser2(user); // System.out.println(user.getId()); // getUser(user.getId()); // System.out.println(user.getName()); query(user.getName().getFirstName()); System.out.println(user.getBirthday()); System.out.print("end"); } static void addUser1(User user) { Session s=null; Transaction tx=null; try{ s=HibernateUtil.getSession(); tx=s.beginTransaction(); s.save(user); tx.commit(); }catch(HibernateException e) { if(tx!=null){ tx.rollback(); throw e; } }finally { if(s!=null) { s.close(); } } } static void addUser2(User user) { Session s=null; Transaction tx=null; try{ s=HibernateUtil.getSession(); tx=s.beginTransaction(); s.save(user); tx.commit(); }finally { if(s!=null) { s.close(); } } } /** * hibernate查询数据不需要开启事务 * @param id * @return */ //获取数据 get static User getUser(int id) { Session s=null; try{ s=HibernateUtil.getSession(); Class classuser=User.class; User user=(User)s.get(User.class, id); return user; }finally { if(s!=null) { s.close(); } } } //获取数据 load static User loadUser(int id) { Session s=null; try{ s=HibernateUtil.getSession(); Class classuser=User.class; User user=(User)s.load(User.class, id); return user; }finally { if(s!=null) { s.close(); } } } static void query(String name){ Session session=null; try{ session=HibernateUtil.getSession(); String hql="from User as u"; Query q=session.createQuery(hql); // q.setString("name", name); List<User> l=q.list(); for(User u:l){ System.out.println(u.getName().getFirstName()); } }finally{ } } } 现在我们来看表结构 命令行输入 show create table user; CREATE TABLE `user` ( `id` int(11) NOT NULL auto_increment, `frist_name` varchar(255) default NULL, `last_name` varchar(255) default NULL, `birthday` datetime default NULL, PRIMARY KEY (`id`) ) ENGINE=InnoDB DEFAULT CHARSET=utf8; 看两个名称是不是都在用户表里了呢? 现在明白了吧! 好了 现在我们来对关联关系查询规律总结下 关联关系总结 一对一关系 在查主对象数据的时候,是以一种左外连接的方式把从表和主表数据全都查询出来的 只有一条select语句 但是要是 查从表的数据,是分两次查询的,一次是查从表数据,一次是查主表数据 其它关系都是分两次查询的 比如多对多 一对多 多对一 关系的查询 不管是查主表还是从表数据,它都会进行两次查询 end 完毕!
发表评论
-
二十六 Hibernate实践
2011-07-04 19:18 713不适合OLAP以查询分析数据为主的系统。适合OLTP联机事务处 ... -
二十五 SQL和命名查询
2011-07-04 19:17 1034SQL和命名查询 SQL查询 //根据sql语句查询 s ... -
二十四 拦截器与监听器
2011-07-04 19:14 947在保存 更新等操作的前 ... -
二十三 iterate查询与N+1次查询的问题
2011-07-04 19:13 771test.java view plaincopy to ... -
二十二 Hibernate映射文件配置
2011-07-04 19:12 874id 主键生成方式 incremen ... -
二十一 串讲Hibernate配置文件中的配置项
2011-07-04 19:11 861数据源配置 ## JNDI Datasource ... -
二十 悲观锁和乐观锁
2011-07-04 19:10 715为了避免对对象同步操作时候产生的数据不一致问题,我们对对象采用 ... -
十九 hibernate3之缓存
2011-07-04 19:09 902什么是缓存?现在我们来看一个模拟的缓存操作 模拟一个缓存例子 ... -
十八 一对一对象的懒加载
2011-07-04 17:59 728一对一对象的懒加载,对于主的一方,lazy是无效的,它在访问数 ... -
十七 懒加载
2011-07-04 17:58 723十七 懒加载 什么是hibe ... -
十六 继承映射
2011-07-04 17:56 480第一种 一个员工类它有两个子类,利用hibernate我们把 ... -
十五 cascade 级联操作与inverse表是否放弃维护关联关系
2011-07-04 17:54 848cascade 级联操作字段 Casade用来说明当对主对 ... -
十四 在hibernate中使用集合总结
2011-07-04 17:52 876集合映射(set, list, array,bag, map) ... -
十三 array数组形式的映射
2011-07-04 17:51 829数组其实跟List的集合映射没有多大的差别,当然它不可以使用b ... -
十二 集合映射之Map集合
2011-07-04 17:49 789十二 Map集合映射 Map是以键值对的形式存放数据的 ... -
十一 集合映射 List集合
2011-07-04 17:47 1024十一 集合映射 set的 ... -
九 多对多关系 学生<--->老师的关系
2011-07-04 17:44 1222九 多对多关系 学生<--->老师的关系 多对多 ... -
八 一对一 用户与身份证的关系
2011-07-04 17:42 859八 一对一 用户与身份证的关系 设计用户实体 主实体 ... -
七 一对多关系 部门与员工的关系
2011-07-04 17:41 1126一对多 部门与员工的关系 相对于部门来说 一对多 根据先前 ... -
六 员工与部门——》多对以关系
2011-07-04 17:37 1017关联关系 多对一关系 员工与部门的关系 从员工角度 是 ...
相关推荐
在 Hibernate 中,组件之间的关联是实现对象模型与数据库表之间映射的关键部分,它包括了一对一、一对多、多对一、多对多等多种关联类型。本篇文章将深入探讨 Hibernate 组件之间的关联机制及其应用。 **一对一关联...
本篇将详细探讨在易语言中如何编写进度条与组件的关联动作。 首先,我们要了解易语言中的“进度条”组件。在易语言中,进度条通常称为“进度指示器”,它可以设置为水平或垂直样式,通过调整其数值来显示任务的完成...
Vue.js 是一款流行的前端JavaScript框架,它以组件化开发为核心,极大地提高了开发效率和代码复用性。在“vuejs组件-选择人员”这个主题中,我们主要关注的是如何使用Vue.js来创建一个用于选择人员的组件。下面将...
3. **数据绑定**:Flex支持数据绑定,这意味着你可以将拓扑图的结构与数据模型关联起来。通过改变数据模型,拓扑图的显示会自动更新,反之亦然,这大大简化了复杂图表的管理。 4. **自定义组件**:拓扑图组件通常...
1. 文件关联:BCF关联工具允许用户将BCF文件与特定的游戏组件关联起来,这样在打开文件时,工具会自动识别并应用相应的解析规则,使用户能更方便地查看和修改游戏数据。 2. 内容编辑:用户可以通过工具提供的界面...
2. 查找特定组件的详细信息,比如其关联的程序、文件位置等。 3. 对比不同时间点的注册信息,帮助识别可能的更改或异常。 4. 解决注册错误,比如当某个应用程序无法启动,可能是因为依赖的COM组件未正确注册。 5. 在...
标签是对资源主题的精炼概括,强调了此资源与aspcn组件、上传功能、VB编程语言以及ASP开发环境的关联性。这些标签有助于用户快速识别资源的主要技术特性,便于搜索和分类。 【文件名称列表】:aspcn组件 由于提供...
我们有了UI交互、有了动画人物、有了物理模拟,还差最后一步——将这些元素融合起来。这次我们使用cocoStudio中的场景编辑器,将先前做过的所有东西都放到一个场景中去。相关博客:...
菜单多选设置,可用于权限多选,菜单多选等更多多选场景内使用。描述,通过树型弹框可以点击选择不同节点,且动态关联节点...如果勾选,则选中父节点则子节点自动选中,取消反选,如果取消勾选,则父子节点没有关联;
在IT行业中,COM(Component Object Model)组件通常与微软的操作系统Windows紧密关联,它是一种对象导向的技术,允许软件组件之间进行交互。然而,标题提到的是"Linux下C++ COM组件demo",这意味着我们将讨论如何在...
标题"layui_修改了树型结构的父选项与子选项关联的问题.rar"暗示了用户在使用LayUI的树形组件时遇到了一个问题,这个问题可能涉及到父节点与子节点之间的关联不正确,导致数据展示或操作上存在异常。在LayUI的树形...
虽然一个TBitBtn组件只能与一个位图相关联,但该位图可以平分为4个部分,分别在按钮处于弹起、按下、禁止和单机状态时显示。 2、TSpeedButton组件:该组件是一个按钮,用于执行一个命令。该组件与Tbutton、Tbitbtn...
事件处理程序`是一个函数,它允许我们将事件处理代码与特定的组件关联起来。 总结一下,易语言中利用变量数组复制组件源码的关键步骤包括: 1. 定义变量数组来存储组件对象。 2. 创建组件实例,并将其添加到数组中...
在Java代码中,我们可以使用`findViewById()`方法来获取与特定ID关联的组件。例如,如果我们有一个ID为"my_button"的按钮,我们可以通过以下方式获取它: ```java Button myButton = (Button) findViewById(R.id.my...
在C++Builder2007中安装自定义组件的过程与早期版本有所不同,因为"Install Component"选项不再直接出现在菜单中。然而,用户仍然可以通过创建和编译包(Package)来安装自定义组件。以下是详细步骤: 1. **新建...
本文将深入探讨在Delphi中如何实现多数据表关联,主要关注TDataSet组件、TTable、TQuery、TDataSource以及SQL语句的应用。 1. **TDataSet组件**:在Delphi中,TDataSet是所有数据集类的基类,它提供了一种抽象的...
2. **关联组件**:LR提供了多种关联组件,如Web_reg_save_param、Web_reg_save_param_ex、Web_reg_find等,它们分别有不同的用途和使用场景。 3. **正则表达式**:在LR中,通常使用正则表达式来识别和提取动态数据...
关联菜单_全国省份-城市,无刷新多级关联菜单 ,简洁好用
每个Activity都有一个与之关联的布局文件,用于定义屏幕上的视图元素。当用户启动一个应用或者在应用之间切换时,系统会创建或恢复相应的Activity。Activity有多种生命周期状态,包括运行、暂停、停止和销毁,开发者...