- 浏览: 142634 次
- 性别:
- 来自: 武汉
文章分类
最新评论
-
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 677不适合OLAP以查询分析数据为主的系统。适合OLTP联机事务处 ... -
二十五 SQL和命名查询
2011-07-04 19:17 1001SQL和命名查询 SQL查询 //根据sql语句查询 s ... -
二十四 拦截器与监听器
2011-07-04 19:14 909在保存 更新等操作的前 ... -
二十三 iterate查询与N+1次查询的问题
2011-07-04 19:13 728test.java view plaincopy to ... -
二十二 Hibernate映射文件配置
2011-07-04 19:12 825id 主键生成方式 incremen ... -
二十一 串讲Hibernate配置文件中的配置项
2011-07-04 19:11 835数据源配置 ## JNDI Datasource ... -
二十 悲观锁和乐观锁
2011-07-04 19:10 681为了避免对对象同步操作时候产生的数据不一致问题,我们对对象采用 ... -
十九 hibernate3之缓存
2011-07-04 19:09 866什么是缓存?现在我们来看一个模拟的缓存操作 模拟一个缓存例子 ... -
十八 一对一对象的懒加载
2011-07-04 17:59 699一对一对象的懒加载,对于主的一方,lazy是无效的,它在访问数 ... -
十七 懒加载
2011-07-04 17:58 660十七 懒加载 什么是hibe ... -
十六 继承映射
2011-07-04 17:56 435第一种 一个员工类它有两个子类,利用hibernate我们把 ... -
十五 cascade 级联操作与inverse表是否放弃维护关联关系
2011-07-04 17:54 799cascade 级联操作字段 Casade用来说明当对主对 ... -
十四 在hibernate中使用集合总结
2011-07-04 17:52 842集合映射(set, list, array,bag, map) ... -
十三 array数组形式的映射
2011-07-04 17:51 780数组其实跟List的集合映射没有多大的差别,当然它不可以使用b ... -
十二 集合映射之Map集合
2011-07-04 17:49 735十二 Map集合映射 Map是以键值对的形式存放数据的 ... -
十一 集合映射 List集合
2011-07-04 17:47 990十一 集合映射 set的 ... -
九 多对多关系 学生<--->老师的关系
2011-07-04 17:44 1164九 多对多关系 学生<--->老师的关系 多对多 ... -
八 一对一 用户与身份证的关系
2011-07-04 17:42 808八 一对一 用户与身份证的关系 设计用户实体 主实体 ... -
七 一对多关系 部门与员工的关系
2011-07-04 17:41 1076一对多 部门与员工的关系 相对于部门来说 一对多 根据先前 ... -
六 员工与部门——》多对以关系
2011-07-04 17:37 970关联关系 多对一关系 员工与部门的关系 从员工角度 是 ...
相关推荐
hibernate组件之间的关联hibernate组件之间的关联hibernate组件之间的关联hibernate组件之间的关联
易语言本人刚刚编写的进度条与组件的关联动作源码,本人刚刚编写的进度条与组件的关联动作
vuejs组件
我们有了UI交互、有了动画人物、有了物理模拟,还差最后一步——将这些元素融合起来。这次我们使用cocoStudio中的场景编辑器,将先前做过的所有东西都放到一个场景中去。相关博客:...
菜单多选设置,可用于权限多选,菜单多选等更多多选场景内使用。描述,通过树型弹框可以点击选择不同节点,且动态关联节点...如果勾选,则选中父节点则子节点自动选中,取消反选,如果取消勾选,则父子节点没有关联;
flex做拓扑图的组件flex做拓扑图的组件flex做拓扑图的组件
虽然一个TBitBtn组件只能与一个位图相关联,但该位图可以平分为4个部分,分别在按钮处于弹起、按下、禁止和单机状态时显示。 2、TSpeedButton组件:该组件是一个按钮,用于执行一个命令。该组件与Tbutton、Tbitbtn...
关联菜单_全国省份-城市,无刷新多级关联菜单 ,简洁好用
本资源实现前端Vue uni-app仿企查查、天眼查关联投资机构 股权结构 tree树形结构 控股结构, 此组件用于展示关联投资结构 股权结构 树形结构 控股结构组件 仿企查查、天眼查关联投资机构 股权结构 tree树形结构 控股...
随着移动互联网的迅猛发展,手机APP已经成为了与我们生活紧密关联的一部分,各种应用场景也都已经落地到了手机移动端,但这也使得APP的业务模块以及对应的代码量越来越繁多,旧的开发架构已经没法满足业务快速发展的...
机器人信号与 SMART 组件信号间的关联 创建机器人路径及程序 1.点击仿真--工作站逻 辑---信号和连接。 2. 点 击 添 加 I/O Connection--跳出对话框 3.源对象:选机器人 源信号:机器人输出信号 目标对象:选 SMART ...
本设计器特色功能就是可以支持任何 vue 项目中被引用的组件,不需要二次开发就...支持数据关联和交互行为的编辑 通过 json 格式数据就可扩展编辑器支持的组件和属性 组件在设计器上呈现形式和属性编辑器支持二次开发
BCF关联工具修改BCF文件和启动游戏组件(BCF relational tools)
2015年5月至2015年8月,针对尼亚美的环境,研究了单晶太阳能光伏组件对灰尘积累,环境温度,相对湿度和云层的敏感性。 已使用两个具有相同特性的太阳能模块来执行灰尘对太阳能PV模块的冲击。 每天早上清洁其中一个...
其启动通过命令行完成: prompt> AppBOSExe.exe test.boscfg <br>建议将配置数据文件命名为.boscfg,并将此类型文件关联到AppBOSExe.exe,从而可以双击配置文件图标以启动应用。 <br>2.6 配置数据文件和...
应用程序组件化前后,用户对其运行载体(进程)没有概念,但是开发者来说,组件化后的应用程序仍然是和进程直接关联的,也就是说,进程一旦不存在,程序和组件也随之灰飞烟灭!
把一个已知类型的文件发送到客户端,直接提示让浏览者下载,而不是用与它相关联的程序打开1.在下载文件是,如图片文件,文本文件,HTML文件或Word文件等,浏览器会自动调用相关程序直接打开要下载的文件,从而达不到...
● 根据字段不同值显示关联的ImageList 对象图片组中的图片. ● 隐藏任意列. ● 显示3D风格的数据区、表尾区和锁定滚动列,制作3D外观表格. ● 显示Memo类型字段值. ● 除BOOLEAN型数据外,其它数据类型也可以检查框...
WIN7+GNS3关联SecureCRT
microservices-dashboard, 显示 Spring Boot 微服务和其关联的组件的仪表板运行截图:示例代码:从 Spring Boot 中去掉 UI <groupId>be.ordina <artifactId>microservices-dashboard-server <version>x.y.z...