Hibernate一对一主键关联(三)
来源:互联网 发布:mac air怎么看内存 编辑:程序博客网 时间:2024/05/16 05:07
一:深入浅出Hibernate里面一对一关联例子,一个人有一个护照
二:通过代码讲解一对一关系
1:在eclipse中新建JAVA PROJECT工程,引入hibernate-release-5.2.2.Final\lib\required下面所有包,还有Oracle驱动包,还有JUnit包
2:编写人和护照的model
package com.hibernate.model;public class TUser {private String id;private String name;private int age;private TPassport passport;public String getId() {return id;}public void setId(String id) {this.id = id;}public String getName() {return name;}public void setName(String name) {this.name = name;}public int getAge() {return age;}public void setAge(int age) {this.age = age;}public TPassport getPassport() {return passport;}public void setPassport(TPassport passport) {this.passport = passport;}}
package com.hibernate.model;public class TPassport {private String id;private String serial;private TUser user;public String getId() {return id;}public void setId(String id) {this.id = id;}public String getSerial() {return serial;}public void setSerial(String serial) {this.serial = serial;}public TUser getUser() {return user;}public void setUser(TUser user) {this.user = user;}}3:数据库表设计
-- Create tablecreate table T_USER( id VARCHAR2(32), name VARCHAR2(50), age NUMBER)
-- Create tablecreate table T_PASSPORT( id VARCHAR2(32), serial VARCHAR2(50))4:配置hibernate.cfg.xml文件
<?xml version='1.0' encoding='utf-8'?> <!DOCTYPE hibernate-configuration PUBLIC "-//Hibernate/Hibernate Configuration DTD 3.0//EN" "http://hibernate.sourceforge.net/hibernate-configuration-3.0.dtd"> <hibernate-configuration> <session-factory> <!-- 数据库JDBC驱动 --> <property name="connection.driver_class">oracle.jdbc.driver.OracleDriver</property> <!-- 数据库URL --> <property name="connection.url">jdbc:oracle:thin:@localhost:1521:orcl</property> <!-- 数据库用户名 密码--> <property name="connection.username">mzzxzj0913</property> <property name="connection.password">1</property> <!-- 数据库Dialect匹配平台特性 --> <property name="dialect">org.hibernate.dialect.Oracle9Dialect</property> <!-- 是否将运行期生成的SQL输出以供调试 --> <property name="show_sql">true</property> <!-- 映射文件配置 --> <mapping resource="com/hibernate/xml/TUser.hbm.xml" /> <mapping resource="com/hibernate/xml/TPassport.hbm.xml" /> </session-factory> </hibernate-configuration>
5:配置映射文件
<?xml version="1.0" encoding="UTF-8"?> <!DOCTYPE hibernate-mapping PUBLIC "-//Hibernate/Hibernate Mapping DTD 3.0//EN" "http://hibernate.sourceforge.net/hibernate-mapping-3.0.dtd"> <hibernate-mapping> <class name="com.hibernate.model.TUser" table="T_USER"> <id name="id" column="id" type="string"></id> <property name="name" column="name" type="java.lang.String"></property> <property name="age" column="age" type="java.lang.Integer"></property> <!-- cascade主控方执行save、update、delete的时候关联对象是否执行同一操作 --> <one-to-one name="passport" class="com.hibernate.model.TPassport" cascade="all" outer-join="true"></one-to-one> </class></hibernate-mapping>
<?xml version="1.0" encoding="UTF-8"?> <!DOCTYPE hibernate-mapping PUBLIC "-//Hibernate/Hibernate Mapping DTD 3.0//EN" "http://hibernate.sourceforge.net/hibernate-mapping-3.0.dtd"> <hibernate-mapping> <class name="com.hibernate.model.TPassport" table="T_PASSPORT"> <id name="id" column="id" type="string"> <generator class="foreign"> <param name="property">user</param> </generator> </id> <!-- constrained告诉hibernate当前主键存在约束 --> <one-to-one name="user" class="com.hibernate.model.TUser" constrained="true"></one-to-one> <property name="serial" column="serial" type="java.lang.String"></property> </class></hibernate-mapping>
6:编写测试类,执行就会往表里插入数据,代码架构一样
package com.hibernate.model;import org.hibernate.Session;import org.hibernate.SessionFactory;import org.hibernate.Transaction;import org.hibernate.cfg.Configuration;import junit.framework.TestCase;public class HibernateTest extends TestCase{private Session session;/** * TestCase初始化的时候会自动调用方法setUp */@Overrideprotected void setUp() throws Exception {Configuration config = new Configuration().configure();SessionFactory sessionFactory = config.buildSessionFactory();session = sessionFactory.openSession();}/** * TestCase执行完毕时,会自动调用tearDown */@Overrideprotected void tearDown() throws Exception {session.close();}/** * Junit会以test为前缀的方法作为测试方法 */public void testInsert(){TUser user = new TUser();user.setId("1");user.setName("xxh");user.setAge(10);TPassport passport = new TPassport();passport.setSerial("ceshi");passport.setUser(user);user.setPassport(passport);Transaction tx = session.beginTransaction();//因为cascade设置为all,所以会一同保存session.save(user);tx.commit();}}
0 0
- Hibernate一对一主键关联(三)
- Hibernate映射详解(三)--一对一主键关联映射
- hibernate映射一对一关联(主键关联)
- Hibernate一对一主键关联
- hibernate一对一主键关联
- hibernate一对一主键关联单向(一)
- hibernate一对一主键关联单向(二)
- Hibernate 第十讲 表关联关系(三)单向项一对一主键关联
- Hibernate 一对一主键关联实例
- Hibernate 一对一主键单向关联
- Hibernate 一对一主键双向关联
- Hibernate一对一关联(共享主键)
- Hibernate 一对一主键单向关联
- Hibernate一对一主键关联映射
- Hibernate 一对一主键双向关联
- hibernate一对一主键关联映射
- Hibernate 一对一主键单向关联
- Hibernate 一对一主键双向关联
- GEO : Affymetrix CEL文件 CDF文件 R语言处理方法
- Uicc之CatService
- mysql的应用
- Node.js本地文件操作之文件拷贝与目录遍历的方法
- php各大主流框架比较
- Hibernate一对一主键关联(三)
- Android GifView控件简述
- 欢迎使用CSDN-markdown编辑器
- RTP/RTCP协议如何实现媒体流的同步
- @PathVariable
- IOS中创建使用链接库(总结)
- TCP/IP协议栈 之 TCP协议
- 异或运算交换两个整数
- 程序模版