hibernate基础08:关联映射之基于外键的双向一对一
2021-02-18 10:17
标签:pass gen show port 参数 nat 格式 mysqld ping 1、Java实体bean类 2、hbm.xml配置 3、hibernate.cfg.xml 4、测试 hibernate基础08:关联映射之基于外键的双向一对一 标签:pass gen show port 参数 nat 格式 mysqld ping 原文地址:https://www.cnblogs.com/chai-blogs/p/12941946.htmlpackage com.project.pojo;
import java.io.Serializable;
public class Card implements Serializable{
private int id;
private String address;
private Person person;
public int getId() {
return id;
}
public void setId(int id) {
this.id = id;
}
public String getAddress() {
return address;
}
public void setAddress(String address) {
this.address = address;
}
public Person getPerson() {
return person;
}
public void setPerson(Person person) {
this.person = person;
}
}
package com.project.pojo;
import java.io.Serializable;
public class Person implements Serializable{
private int id ;
private String name;
private String sex;
private Card card;
public int getId() {
return id;
}
public void setId(int id) {
this.id = id;
}
public String getName() {
return name;
}
public void setName(String name) {
this.name = name;
}
public String getSex() {
return sex;
}
public void setSex(String sex) {
this.sex = sex;
}
public Card getCard() {
return card;
}
public void setCard(Card card) {
this.card = card;
}
}
xml version="1.0" encoding="UTF-8"?>
DOCTYPE hibernate-mapping PUBLIC
"-//Hibernate/Hibernate Mapping DTD 3.0//EN"
"http://www.hibernate.org/dtd/hibernate-mapping-3.0.dtd">
hibernate-mapping package="com.project.pojo">
class name="Card" table="t_card">
id name="id" column="id" type="int">
generator class="native">generator>
id>
property name="address" />
one-to-one name="person" property-ref="card">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://www.hibernate.org/dtd/hibernate-mapping-3.0.dtd">
hibernate-mapping package="com.project.pojo">
class name="Person" table="t_person">
id name="id" column="id" type="int">
generator class="native">generator>
id>
property name="name" />
property name="sex" />
many-to-one name="card" column="card_id" unique="true" />
class>
hibernate-mapping>
xml version="1.0" encoding="UTF-8"?>
DOCTYPE hibernate-configuration PUBLIC
"-//Hibernate/Hibernate Configuration DTD 3.0//EN"
"http://www.hibernate.org/dtd/hibernate-configuration-3.0.dtd">
hibernate-configuration>
session-factory>
property name="dialect">org.hibernate.dialect.MySQLDialectproperty>
property name="connection.driver_class">com.mysql.jdbc.Driverproperty>
property name="connection.url">jdbc:mysql://192.168.1.59:3306/hibernate?characterEncoding=UTF8property>
property name="connection.username">rootproperty>
property name="connection.password">1234property>
property name="show_sql">trueproperty>
property name="format_sql">trueproperty>
mapping resource="com/project/pojo/Card.hbm.xml" />
mapping resource="com/project/pojo/Person.hbm.xml" />
session-factory >
hibernate-configuration>
package com.project.test;
import org.hibernate.Session;
import org.hibernate.Transaction;
import org.hibernate.cfg.Configuration;
import org.hibernate.tool.hbm2ddl.SchemaExport;
import org.junit.After;
import org.junit.Before;
import org.junit.Test;
import com.project.pojo.Card;
import com.project.pojo.Person;
import com.project.util.HibernateUtil;
public class HibernateTest {
Session session = null;
Transaction ts = null;
@Before
public void setUp(){
session = HibernateUtil.getSession();
ts = session.beginTransaction();
}
@After
public void tearDown(){
HibernateUtil.closeSession();
}
@Test
public void testCreateDB(){
Configuration cfg = new Configuration().configure();
//使得hibernate映射信息转换为数据库识别的dll语言
SchemaExport se = new SchemaExport(cfg);
//第一个参数:是否打印dll语句
//第二个参数:是否将dll到数据库中执行
se.create(true, true);
}
@Test
public void testInit(){
try {
Card c1 = new Card();
c1.setAddress("xx市1区");
Card c2 = new Card();
c2.setAddress("xx市2区");
session.save(c1);
session.save(c2);
Person p1 = new Person();
p1.setName("张三");
p1.setSex("男");
p1.setCard(c1);
Person p2 = new Person();
p2.setName("李四");
p2.setSex("男");
p2.setCard(c2);
session.save(p1);
session.save(p2);
ts.commit();
} catch (Exception e) {
e.printStackTrace();
if(ts!=null)ts.rollback();
}
}
@Test
public void testSelect(){
Person p = (Person)session.get(Person.class, 1);
System.out.println(p.getName()+"\t"+p.getSex());
System.out.println("---------------");
System.out.println(p.getCard().getAddress());
System.out.println("=================");
System.out.println(p.getCard().getPerson().getName());
}
}
下一篇:Nodejs入门简介
文章标题:hibernate基础08:关联映射之基于外键的双向一对一
文章链接:http://soscw.com/index.php/essay/56997.html