今天下午做了重新复习了hibernate的一些小实验,晚上就在这总结一下今天下午所学的东东吧。
1、Card.java
- package model;
- public class Card {
- private int id;
- private String number;
- private Person person; //与Person类关联
- public int getId() {
- return id;
- }
- public void setId(int id) {
- this.id = id;
- }
- public String getNumber() {
- return number;
- }
- public void setNumber(String number) {
- this.number = number;
- }
- public Person getPerson() {
- return person;
- }
- public void setPerson(Person person) {
- this.person = person;
- }
- }
2、Person.java
- package model;
- public class Person {
- private int id;
- private String name;
- 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;
- }
- }
3、Person.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">
- <hibernate-mapping>
- <class name="model.Person" table="person">
- <id name="id" type="integer">
- <generator class="native" />
- </id>
- <property name="name" />
- </class>
- </hibernate-mapping>
4、Card.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">
- <hibernate-mapping>
- <class name="model.Card" table="card">
- <id name="id" type="integer">
- <!-- 主键生成方式为foreign -->
- <generator class="foreign">
- <param name="property">person</param>
- </generator>
- </id>
- <property name="number"></property>
- <!-- constrained=true表示生成外键约束 -->
- <one-to-one name="person" constrained="true"></one-to-one>
- </class>
- </hibernate-mapping>
测试test
- package test;
- import model.Card;
- import model.Person;
- import org.hibernate.Session;
- import org.hibernate.SessionFactory;
- import org.hibernate.cfg.Configuration;
- import org.hibernate.tool.hbm2ddl.SchemaExport;
- import org.junit.Test;
- public class HibernateORMappingTest {
- @Test
- public void testCreateDB(){
- //生成表结构
- Configuration config = new Configuration().configure();
- SchemaExport export = new SchemaExport(config);
- export.create(true, true);
- }
- @Test
- public void testSave(){
- //测试 添加数据
- Configuration cfg = new Configuration().configure();
- SessionFactory sessionfactory = cfg.buildSessionFactory();
- Session session = sessionfactory.openSession();
- session.beginTransaction();
- Person person = new Person();
- person.setName("liuchendi");
- Card card = new Card();
- card.setNumber("441426199105250099");
- card.setPerson(person);
- session.save(card);
- session.getTransaction().commit();
- session.close();
- sessionfactory.close();
- }
- @Test
- public void testGetPerson(){
- Configuration config = new Configuration().configure();
- SessionFactory sessionfactory = config.buildSessionFactory();
- Session session = sessionfactory.openSession();
- session.beginTransaction();
- Card card = (Card)session.get(Card.class,1); //获取第1条数据
- System.out.println("CardNumber is :" + card.getNumber());
- Person person = card.getPerson();//通过card.getPerson()方法 返回person
- System.out.println("PersonName is :" + person.getName());
- session.getTransaction().commit();
- session.close();
- sessionfactory.close();
- }
- }
其实做这个的目的是可以通过card来获取person的属性,实现关联。
转载于:https://blog.51cto.com/lovelydd/998883