Hibernate 、多表关联映射-组件关联映射(component)
2015-10-26 17:33
393 查看
组件关联映射可以将一些简小的数据与主题放在一个表中,例如firstName 和LastName这两个结合在一起可以组成一个名字,但是再分别将这两个再建一个表就不太合适了,这个时候可以用到组件关联映射;
hibernate.cfg.xml:
<hibernate-configuration> <session-factory name="sessionFactory"> <property name="hibernate.dialect">org.hibernate.dialect.MySQLDialect</property> <property name="hibernate.connection.driver_class">com.mysql.jdbc.Driver</property> <property name="hibernate.connection.url">jdbc:mysql://localhost:3306/spring?useUnicode=true&characterEncoding=UTF-8</property> <property name="hibernate.connection.username">root</property> <property name="hibernate.connection.password"></property> <property name="hibernate.show_sql">true</property> <property name="hibernate.format_sql">true</property> <property name="hibernate.hbm2ddl.auto">update</property> <mapping resource="cn/hbm/Person2.hbm.xml" /> </session-factory> </hibernate-configuration>
Person:
public class Person2 { private Integer id; private Name name; public Integer getId() { return id; } public void setId(Integer id) { this.id = id; } public Name getName() { return name; } public void setName(Name name) { this.name = name; } }name:
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; } }hbm.xml
<hibernate-mapping package="cn.model"> <class name="Person2" table="PERSON2"> <id name="id" column="ID"> <generator class="native"></generator> </id> <component name="name"> <property name="firstName" column="FIRST_NAME" /> <property name="lastName" column="LAST_NAME" /> </component> </class> </hibernate-mapping>
public void saveZujian(){ Session session=null; Transaction tran=null; try{ Person2 person=new Person2(); Name name=new Name(); name.setFirstName("jack"); name.setLastName("tomson"); person.setName(name); session=HibernateSessionFactory.getSession(); tran=session.beginTransaction(); session.save(person); tran.commit(); }catch(Exception e){ if(session!=null){ session.close(); } } }
执行保存以后可看到生成的SQL
确实创建在一张表中了。
执行查询:
public Person2 getPersonById(Integer id){ Session session=null; try{ session=HibernateSessionFactory.getSession(); return (Person2)session.get(Person2.class, id); }catch(Exception e){ if(session!=null){ session.close(); } } return null; }
相关文章推荐
- 20135306 第六章学习总结
- 【bzoj1196】【HAOI2006】【公路修建】【二分+最小生成树】
- db2 SQL1005N
- 只能通过Chrome网上应用商店安装该程序
- Camera Calibration 相机标定:Opencv应用方法
- Camera Calibration 相机标定:Opencv应用方法
- ios9 不受信任的开发者
- (原创)c#学习笔记06--函数01--定义和使用函数02--参数
- 系统文件-- lsof
- C++:对象指针
- 使用Android Studio创建Android项目
- 解决Myeclipse编译不生成.class文件问题
- 2015CCPC小记
- HTML5实现端访问时禁止放大和缩小网页
- 如何关闭Internet Explorer 增强的安全配置
- 第七周--数据结构--建立链队算法库
- 一个完整项目的实现
- 【bzoj2962】【序列操作】【线段树】
- SHINE OPENCART 自适应 多用途主题模板 ABC-0021
- mac os brew install request githup token