Hibernate关联映射-one to one单向外键关联
Hibernate的关联关系很多,也非常的复杂.
常见的有 one to one ,one to many ,many to one, many to many等等.
?
学习这些,关联关系.这个基本上占据了Hibernate学习的七成时间。熟悉这些映射模型,需要大量的实践才能掌握。
?
?
以下,就先拿最简单关联关系讲起..one to one 关联的实例, 比如1个人只有一个居住地址, 1个人只有一张唯一的身份证。
这里就拿,人和地址作为1对1的关联关系。
?
做这些实例采用 有如下开发工具:
eclipse 3.3
mysql 5.4?数据库.
tomcat 6.0
?
本实例,将通过Mapping 映射文件自动生成数据库表;
建立两个Pojo类,一个Person,一个Address类.
?
具体代码如下:
?
建立Address.hbm.xml文件:
?
?
建立好之后,然后建立一个Hibernate的配置文件,添加连接数据库的一些基本信息.以及Mapping文件的映射地址.
Hibernate.cfg.xml文件:
package pack.java.test;import java.util.List;import org.hibernate.Query;import org.hibernate.Session;import pack.java.hibernate.HibernateSessionFactory;import pack.java.model.Address;import pack.java.model.Person;/** * 测试; * @author Administrator * */public class HibernateDaoDemo {/** * 测试主方法; * @param args */public static void main(String[] args) {Session session = getSession();HibernateDaoDemo hibernateDaoDemo = new HibernateDaoDemo();//保存person对象;hibernateDaoDemo.savePerson(session);//查询;List<Person> personList = hibernateDaoDemo.queryPerson(session);for(Person person:personList){System.out.println(person.getId()+","+person.getName()+","+person.getAge()+","+person.getAddress());}}/** * 创建session; * @return */private static Session getSession(){return HibernateSessionFactory.getSession();}/** * 保存Person; * @param session */private void savePerson(Session session){Person person = new Person();person.setAge(23);person.setName("周海涛");Address address = new Address();address.setAddressDetail("中国湖南株洲市");person.setAddress(address);session.beginTransaction().begin();//保存;session.save(person);session.beginTransaction().commit();System.out.println("保存成功!");}/** * 查询Person; * @param session * @return */private List<Person> queryPerson(Session session){Query query = session.createQuery("from Person p where p.name=:name");query.setParameter("name", "ZhouHaiTao");List<Person> list = query.list();return list;}}?
?
?
?