hibernate----1-N--jointable(人与地址)

package com.ij34.dao;

import java.util.HashMap;
import java.util.HashSet;
import java.util.Set;

import javax.persistence.*;

@Entity
@Table(name="people_inf")
public class People implements java.io.Serializable{
    private static final long serialVersionUID = 1L;
    @Id @Column(name="people_id")
    @GeneratedValue(strategy=GenerationType.IDENTITY)
    private Integer id;
    private String name;
    private int age;
    @OneToMany(targetEntity=Address.class) //与另一个相比,没有mappedBy="people"
    @JoinTable(name="people_address"
    ,joinColumns[email protected](name="peopleId" ,referencedColumnName="people_id")
    ,inverseJoinColumns[email protected](name="addressId" ,referencedColumnName="address_id" ,unique=true)
    )
    private Set<Address> address=new HashSet<>();
    public Integer getId() {
        return id;
    }
    public void setId(Integer 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 Set<Address> getAddress() {
        return address;
    }
    public void setAddress(Set<Address> address) {
        this.address = address;
    }

}

package com.ij34.dao;

import javax.persistence.*;

@Entity
@Table(name="Address_inf")
public class Address{
    @Id @Column(name="address_id")
    @GeneratedValue(strategy=GenerationType.IDENTITY)
    private int addressId;
    private String message;
    @ManyToOne(targetEntity=People.class)

    @JoinTable(name="people_address"
    ,joinColumns[email protected](name="addressId" ,referencedColumnName="address_id" ,unique=true)
    ,inverseJoinColumns[email protected](name="peopleId" ,referencedColumnName="people_id" )
    )
    private People people;
    public int getAddressId() {
        return addressId;
    }
    public void setAddressId(int addressId) {
        this.addressId = addressId;
    }
    public String getMessage() {
        return message;
    }
    public void setMessage(String message) {
        this.message = message;
    }
    public People getPeople() {
        return people;
    }
    public void setPeople(People people) {
        this.people = people;
    }

}

package com.ij34.web;

    import org.hibernate.Session;
    import org.hibernate.SessionFactory;
    import org.hibernate.Transaction;
    import org.hibernate.boot.registry.StandardServiceRegistryBuilder;
    import org.hibernate.cfg.Configuration;
    import org.hibernate.service.*;

import com.ij34.dao.Address;
import com.ij34.dao.People;
    public class test01 {
    public static void main(String[] args)throws Exception {
    //实例化Configuration
    Configuration conf=new Configuration().configure();
    ServiceRegistry SR=new StandardServiceRegistryBuilder().applySettings(conf.getProperties()).build();
    // 以Configuration实例创建SessionFactory实例
    SessionFactory SF=conf.buildSessionFactory(SR);
    //create session
    Session session=SF.openSession();
    //start 事务
    Transaction tx=session.beginTransaction();
    People person = new People();
    person.setAge(29);
    // 为复合主键的两个成员设置值
   People people=new People();
   people.setAge(22);
   people.setName("林彪");
   Address a=new Address();
   a.setMessage("广州");
   a.setPeople(people);
   Address a2=new Address();
   a2.setMessage("香港");
   people.getAddress().add(a2);
   session.persist(a);
   session.save(people);
   session.persist(a2);
    tx.commit();
    session.close();
    SF.close();
    }
    }
时间: 2024-08-15 06:00:33

hibernate----1-N--jointable(人与地址)的相关文章

Hibernate包及相关工具包下载地址

Hibernate包及相关工具包下载地址: http://prdownloads.sourceforge.net/hibernate/ 这里包含所有hibernate各个版本的包下载,且提供了 Middlegen Hibernate及hibernate-extensions包的下载.这两个包是用于自动生成相就的JAVA和*.hbm.xml文件. Hibernate包: http://sourceforge.net/projects/hibernate/files/hibernate3/3.1.2

org.hibernate.LazyInitializationException: could not initialize proxy - no Session

在<many-to-on>中这错误很常见,字面意义就是不能被初始化,因为session已经关闭了. 简单理解就是因为,你使用了lazy=true,这样hibernate在从数据库中调数据的时候是不会把关联的对象查出来的,而是保存一个获取值得方法,在你使用getXXX()调用的时候,hiberante会利用这个保存的方法去从数据库中取数据.而往往我们在jsp页面中使用getXXX()准备展示数据的时候,session早已经在dao中就关闭了,我们该如何解决这种异常呢? 简单的说有三种:1.把la

Hibernate延迟加载

参考:http://blog.csdn.net/s_good/article/details/7411642 1.关于lazy机制: 延迟初始化错误是运用Hibernate开发项目时最常见的错误.如果对一个类或者集合配置了延迟检索策略,那么必须当代理类实例或代理集合处于持久化状态(即处于Session范围内)时,才能初始化它.如果在游离状态时才初始化它,就会产生延迟初始化错误. 下面把Customer.hbm.xml文件的<class>元素的lazy属性设为true,表示使用延迟检索策略: &

springmvc+hibernate+extjs4mvc 权限管理

原文:springmvc+hibernate+extjs4mvc 权限管理 源代码下载地址:http://www.zuidaima.com/share/1550463526898688.htm 看到有朋友说要数据库,在此说明一下,用hibernate反向生成数表,系统里面有个方法init(),可以初始化基础数据..... 代码基本实现,权限粒度到按钮,不细说,上图...

Spring4.x Jpa + hibernate的配置(废弃JpaTemplate)

近年来 ORM(Object-Relational Mapping,对象关系映射,即实体对象和数据库表的映射)技术市场热闹非凡,各种各样的持久化框架应运而生,其中影响最大的是 Hibernate 和 Toplink.Sun 公司在充分吸收现有的优秀 ORM 尤其是 Hibernate 框架设计思想的基础上,制定了新的 JPA(Java Persistence API)规范,对现在乱象丛生的持久化市场带来一个标准,大有统一持久化市场的气势.JPA 是通过 JDK5.0 注解或 XML 描述对象 -

一个spring+springMVC+hibernate项目的建立

搭建一个java web项目 主要使用spring 表现层用springMVC 持久化层使用hibernate IDE主要使用的是MyEclipse并配置好Tomcat. 启动IDE,首先新建一个Web Project,紧接着修改WebRoot根目录下WEB-INF 文件夹下的配置文件Web.xml web.xml <?xml version="1.0" encoding="UTF-8"?> <web-app version="3.0&q

浅谈JavaEE中的Hibernate环境的搭建(二)

从今天开始,我们一起来进入有关Hibernate框架的学习,Hibernate框架实际上是基于JDBC的高度封装的框架,所以对比起来Hibernate的运行效率没有JDBC效率高但是Hibernate的开发效率却比JDBC的要高,这也是企业级开发所追求的.所以目前大部分企业开发都不会使用JDBC.欲工善其事,必先利其器,首先我们熟悉下Hibernate环境搭建. Hibernate环境搭建步骤: 第一步:获取到Hibernate发布包,可以去Hibernate官网上去下载,或者去GitHub直接

Hibernate开发环境搭建

一.下载Hibernate包的下载 官网地址:http://hibernate.org/orm/ 下载版本:hibernate-release-4.3.11.Final 二.Hibernate jar包介绍 包名 用途 hibernate-core-4.3.11.Final.jar Hibernate核心包 antlr-2.7.7.jar Hibernate利用它实现从HQL到SQL的转换 dom4j-1.6.1.jar 解析XML配置文件和XML映射文件 hibernate-commons-a

Hibernate学习之路(一)—— HelloWorld

1.所用软件: (1)eclipse java ee IDE (2)MySQL数据库 2.eclipse中引入相应jar包: 1)build path中引入hibernate的jar包 2)引入mysql连接java的jar包 3.写hibernate配置文件 将文件命名为hibernate.cfg.xml 1 <?xml version="1.0" encoding="UTF-8"?> 2 3 <!DOCTYPE hibernate-config