基于外键映射的 一对一关系
来源:互联网 发布:mac卸载win10 编辑:程序博客网 时间:2024/05/29 02:07
一.
二.代码实现
1.Department
package cn.edu.sdut.hibernate.onetoone;public class Department {private int deId;private String deName;private Manager mgr;public int getDeId() {return deId;}public void setDeId(int deId) {this.deId = deId;}public String getDeName() {return deName;}public void setDeName(String deName) {this.deName = deName;}public Manager getMgr() {return mgr;}public void setMgr(Manager mgr) {this.mgr = mgr;}}
2. Manager
package cn.edu.sdut.hibernate.onetoone;public class Manager {private int maId;private String mName;private Department department;public int getMaId() {return maId;}public void setMaId(int maId) {this.maId = maId;}public String getmName() {return mName;}public void setmName(String mName) {this.mName = mName;}public Department getDepartment() {return department;}public void setDepartment(Department department) {this.department = department;}}3.Department.hbm.xml
<?xml version="1.0"?><!DOCTYPE hibernate-mapping PUBLIC "-//Hibernate/Hibernate Mapping DTD 3.0//EN""http://hibernate.sourceforge.net/hibernate-mapping-3.0.dtd"><!-- Generated 2016-10-30 14:28:39 by Hibernate Tools 3.4.0.CR1 --><hibernate-mapping> <class name="cn.edu.sdut.hibernate.onetoone.Department" table="DEPARTMENTS"> <id name="deId" type="int"> <column name="DE_ID" /> <generator class="native" /> </id> <property name="deName" type="java.lang.String"> <column name="DE_NAME" /> </property> <many-to-one name="mgr" class="cn.edu.sdut.hibernate.onetoone.Manager"> <column name="MA_ID" unique="true"></column> </many-to-one> </class></hibernate-mapping>
4.Manager.hbm.xml
<?xml version="1.0"?><!DOCTYPE hibernate-mapping PUBLIC "-//Hibernate/Hibernate Mapping DTD 3.0//EN""http://hibernate.sourceforge.net/hibernate-mapping-3.0.dtd"><!-- Generated 2016-10-30 14:28:39 by Hibernate Tools 3.4.0.CR1 --><hibernate-mapping> <class name="cn.edu.sdut.hibernate.onetoone.Manager" table="MANAGERS"> <id name="maId" type="int"> <column name="MA_ID" /> <generator class="native" /> </id> <property name="mName" type="java.lang.String"> <column name="M_NAME" /> </property> <one-to-one name="department" class="cn.edu.sdut.hibernate.onetoone.Department" property-ref="mgr"></one-to-one> </class></hibernate-mapping>5.DoubleOneToOneTest
package cn.edu.sdut.hibernate.onetoone;import org.hibernate.Session;import org.hibernate.SessionFactory;import org.hibernate.Transaction;import org.hibernate.cfg.Configuration;import org.hibernate.service.ServiceRegistry;import org.hibernate.service.ServiceRegistryBuilder;import org.junit.After;import org.junit.Before;import org.junit.Test;public class DoubleOneToOneTest {private SessionFactory sessionFactory;private Session session;private Transaction transaction;@Beforepublic void init(){Configuration configuration = new Configuration().configure();ServiceRegistry serviceRegistry = new ServiceRegistryBuilder().applySettings(configuration.getProperties()).buildServiceRegistry();sessionFactory = configuration.buildSessionFactory(serviceRegistry);session = sessionFactory.openSession();transaction = session.beginTransaction();}@Afterpublic void destory(){transaction.commit();session.close();sessionFactory.close();}@Testpublic void testSave(){Manager manager = new Manager();manager.setmName("csc");Department department = new Department();department.setDeName("AA");department.setMgr(manager);manager.setDepartment(department);//保存的时候先保存1to1的,后保存nto1(设置为unique = true),效率高session.save(manager);session.save(department);}@Testpublic void testGet(){//get获取的时候不会出现懒加载异常,因为在得到manger的时候会把所有的信息加载出来Manager manager = (Manager) session.get(Manager.class, 1);System.out.println(manager.getDepartment().getClass().getName());}@Testpublic void testDelete(){//再不设置联级关系的时候不能联级删除Manager manager = (Manager) session.get(Manager.class, 2);//Department department = (Department) session.get(Department.class, 1);//session.delete(department);session.delete(manager);}}6、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> <!-- 配置连接数据库的基本信息 --> <property name="connection.username">root</property> <property name="connection.password">csc</property> <property name="connection.driver_class">com.mysql.jdbc.Driver</property> <property name="connection.url">jdbc:mysql:///hibernate5</property> <!-- 配置hibernate的基本信息 --> <!-- hibernate 所使用的数据库方言 --> <property name="dialect">org.hibernate.dialect.MySQLInnoDBDialect</property> <!-- 执行sql时是否在控制台上打印 --> <property name="show_sql">true</property> <!-- 是否对sql进行格式化 --> <property name="format_sql">true</property> <!-- 指定自动生成数据表的策略 --> <property name="hbm2ddl.auto">update</property> <!-- 指定session的delete方法会把对象的id置为null --> <property name="hibernate.use_identifier_rollback">true</property> <!-- 指定数据库的隔离级别 --> <property name="connection.isolation">2</property> <!-- 配置c3p0数据池 --> <property name="hibernate.c3p0.max_size">100</property> <property name="hibernate.c3p0.min_size">20</property> <property name="hibernate.c3p0.acquire_increment">5</property> <property name="hibernate.c3p0.timeout">2000</property> <property name="hibernate.c3p0.idle_test_period">2000</property> <property name="hibernate.c3p0.max_statements">10</property> <!-- 设定JDBC的statment读取数据的时候每次在数据库中读取的记录的条数 --> <property name="hibernate.jdbc.fetch_size">100</property> <!-- 设定对数据进行批量操作,批次更新和批次插入的批次大小 --> <property name="hibernate.jdbc.batch_size">30</property> <!-- 指定关联的xxx.hbm.xml文件 --> <mapping resource="cn/edu/sdut/hibernate/helloworld/News.hbm.xml"/> <mapping resource="cn/edu/sdut/hibernate/manytoone/Customer.hbm.xml"/> <mapping resource="cn/edu/sdut/hibernate/manytoone/Order.hbm.xml"/> <mapping resource="cn/edu/sdut/hibernate/onetoone/Department.hbm.xml"/> <mapping resource="cn/edu/sdut/hibernate/onetoone/Manager.hbm.xml"/> </session-factory></hibernate-configuration>
0 0
- 基于外键映射的 一对一关系
- Hibernate_映射_关联关系_一对一映射2_基于外键的方式
- Hibernate基于主键的一对一映射关系
- 基于主键映射的 一对一关系
- hibernate实现一对一关系映射(基于外键)
- Hibernate之基于外键映射的一对一(1-1)关联关系
- Hibernate基于外键和主键的双向一对一关系映射
- 基于外键的一对一关系
- 基于外键的一对一关联关系
- 一对一关联关系(基于外键映射和基于主键映射两种方式)
- Hibernate一对一映射(基于外键的映射,基于主键的映射)
- 第十章 基于Annotation的关系映射 一对一
- Hibernate之基于主键映射的一对一关联关系
- hibernate的一对一主键双向映射关系和外键双向映射关系(一)
- Hibernate ORM映射:基于外键的一对一
- hibernate基于Annotation的一对一外键映射
- hibernate基于外键的一对一映射--单向和双向
- hibernate实现一对一关系映射(基于主键)
- 【leetCode】Largest Rectangle in Histogram&Maximal Rectangle
- Android studio 如何导入并引用Library工程
- SPEC携手Cloud孕育性能新基准
- 396. Rotate Function (python)
- springMVC 静态资源引用
- 基于外键映射的 一对一关系
- linux函数调用中栈空间使用原则的验证
- 软件测试术语
- 深入理解java集合类及其运用总结及经验分享
- 记录下Cobbler + DTK 自动批量建立 RAID
- Unity3D自学笔记——架构应用(一)用户登录
- 2016-10-29森林虫害项目之网页
- 11. Container With Most Water (python)
- hihCoder #1051 : 补提交卡(贪心)