Hibernate容器映射技术 Set 的用法(一对多)

//下面的代码完全可以运行。

 

1、数据库脚本的创建


-- 创建表
CREATE TABLE person
(
  id INT PRIMARY KEY ,
  name VARCHAR(20)
) ;
create sequence seq_personn;
commit;
CREATE TABLE emails
(
  id INT  ,
  address VARCHAR(50) ,
  foreign key (id) references person(id) on delete cascade
) ;

 

 

2、pojo类的创建

 

public class Person {
 private Integer id ;
 private String name ;
 // 一个人拥有多个不同的email地址
 private Set emails ;
 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 Set getEmails() {
  return emails;
 }
 public void setEmails(Set emails) {
  this.emails = emails;
 }
}

 

3、操作方法类的创建

public class PersonOperate {
 private Session session;
 
 public PersonOperate(){
  this.session=new Configuration().configure().buildSessionFactory().openSession();
 }
 //添加操作
 public void insert(Person per) {
  this.session.save(per);
  this.session.beginTransaction().commit();
 }
  //根据id删除操作
 public void delete(int id){
  String hql="delete from Person  where id=?";
  Query q=this.session.createQuery(hql);
  q.setInteger(0, id);
        q.executeUpdate();
        this.session.beginTransaction().commit();
 }
 //根据id查询操作
 public Person queryById(int id){
  Person p=null;
  String hql="from Person as p where p.id=?";
  Query q=this.session.createQuery(hql);
  q.setInteger(0, id);
//  List list=q.list();
//  if(list.size()>0){
//   p=(Person)list.get(0);
//  }
  
 //下面的方法和上面的方法的作用是一样的。上面的方法效率应该高一些。 
  List list=q.list();
  Iterator ite=list.iterator();
  if(ite.hasNext()){
  p=(Person)ite.next();
  }
  return p;

 }
 //更新操作
 public void update(Person p){
  this.session.update(p);
  this.session.beginTransaction().commit();
 }


}

 

4、测试类的创建

public class TestPersonOperate {

 public static void main(String[] args)throws Exception{
  PersonOperate po=new PersonOperate();
  
  Person p=new Person();
  
  p.setName("jack");
  p.setEmails(new TreeSet());
  p.getEmails().add("
www.jack.com");
  p.getEmails().add("
www.jack.com");
  p.getEmails().add("
www.jack.com");
  p.getEmails().add("
www.123.com");

  

//       下面是插入数据的操作
//       po.insert(p);
//   System.out.println("可以成功的插入数据!");
  
//      下面是删除操作
//    po.delete(14);
//  System.out.println("可以成功的删除数据!");
  
//      下面是根据Id查询操作
//     Person per=po.queryById(19);
//  System.out.println(per.getName());
  
//      下面是更新操作
  Person per=po.queryById(19);
     per.getEmails().add("
www.janice.com");
     per.getEmails().add("
www.jack.com");
     per.getEmails().add("
www.jack.com");
     per.getEmails().add("
www.123.com");
  po.update(per);

 }

}

 

5、配置文件的创建

<?xml version="1.0" encoding="utf-8"?>
<!DOCTYPE hibernate-mapping PUBLIC "-//Hibernate/Hibernate Mapping DTD 3.0//EN"
"
http://hibernate.sourceforge.net/hibernate-mapping-3.0.dtd">
<!--
    Mapping file autogenerated by MyEclipse Persistence Tools
-->
<hibernate-mapping>
    <class name="org.hibernate5.com.Person" table="PERSON" schema="SCOTT">
        <id name="id" type="java.lang.Integer">
            <column name="ID" precision="22" scale="0" />
            <generator class="sequence">
            <param name="sequence">seq_personn</param>
            </generator>
        </id>
        <property name="name" type="java.lang.String">
            <column name="NAME" length="20" />
        </property>
       
        <set name="emails" table="emails" lazy="false">
   <key column="ID"></key>
   <element type="java.lang.String" column="address"></element>
  </set>
    </class>
</hibernate-mapping>


完毕!

总结:Hibernate容器映射技术 还有list ,map等,一些用法。

 

  • 0
    点赞
  • 0
    收藏
    觉得还不错? 一键收藏
  • 0
    评论

“相关推荐”对你有帮助么?

  • 非常没帮助
  • 没帮助
  • 一般
  • 有帮助
  • 非常有帮助
提交
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值