热门标签 | HotTags
当前位置:  开发笔记 > 编程语言 > 正文

(六)Hibernate映射类型

所有项目导入对应的hibernate的jar包、mysql的jar包和添加每次都需要用到的HibernateUtil.java第一节:基本类型映射例子:hibernate.cfg.

所有项目导入对应的hibernate的jar包、mysql的jar包和添加每次都需要用到的HibernateUtil.java

第一节:基本类型映射

 技术分享

 例子:

hibernate.cfg.xml

 1 xml version=‘1.0‘ encoding=‘utf-8‘?>
 2 DOCTYPE hibernate-configuration PUBLIC
 3         "-//Hibernate/Hibernate Configuration DTD 3.0//EN"
 4         "http://www.hibernate.org/dtd/hibernate-configuration-3.0.dtd">
 5 
 6 <hibernate-configuration>
 7 
 8     <session-factory>
 9 
10         
11         <property name="connection.driver_class">com.mysql.jdbc.Driverproperty>
12         <property name="connection.url">jdbc:mysql://localhost:3306/hibernateproperty>
13         <property name="connection.username">rootproperty>
14         <property name="connection.password">123456property>
15 
16        
17         
18         <property name="dialect">org.hibernate.dialect.MySQL5Dialectproperty>
19     
20         
21         <property name="show_sql">trueproperty>
22 
23         
24         <property name="hbm2ddl.auto">updateproperty>
25         
26           <mapping resource="com/wishwzp/model/Student.hbm.xml"/>
27           
28           <mapping resource="com/wishwzp/model/Book.hbm.xml"/>
29 
30     session-factory>
31 
32 hibernate-configuration>

Book.java

 1 package com.wishwzp.model;
 2 
 3 import java.sql.Blob;
 4 import java.util.Date;
 5 
 6 public class Book {
 7 
 8     private int id;
 9     private String bookName; // 图书名称
10     private float price; // 图书价格
11     private boolean specialPrice; // 是否是特价
12     private Date publishDate; // 发布日期
13     private String author; // 作者
14     private String introduction; // 简介
15     private Blob bookPic; // 图书图片
16     
17     public int getId() {
18         return id;
19     }
20     public void setId(int id) {
21         this.id = id;
22     }
23     public String getBookName() {
24         return bookName;
25     }
26     public void setBookName(String bookName) {
27         this.bookName = bookName;
28     }
29     public float getPrice() {
30         return price;
31     }
32     public void setPrice(float price) {
33         this.price = price;
34     }
35     public boolean isSpecialPrice() {
36         return specialPrice;
37     }
38     public void setSpecialPrice(boolean specialPrice) {
39         this.specialPrice = specialPrice;
40     }
41     public Date getPublishDate() {
42         return publishDate;
43     }
44     public void setPublishDate(Date publishDate) {
45         this.publishDate = publishDate;
46     }
47     public String getAuthor() {
48         return author;
49     }
50     public void setAuthor(String author) {
51         this.author = author;
52     }
53     public String getIntroduction() {
54         return introduction;
55     }
56     public void setIntroduction(String introduction) {
57         this.introduction = introduction;
58     }
59     public Blob getBookPic() {
60         return bookPic;
61     }
62     public void setBookPic(Blob bookPic) {
63         this.bookPic = bookPic;
64     }
65     
66     
67     
68 }

Book.hbm.xml

 1 xml version="1.0"?>
 2 DOCTYPE hibernate-mapping PUBLIC
 3         "-//Hibernate/Hibernate Mapping DTD 3.0//EN"
 4         "http://www.hibernate.org/dtd/hibernate-mapping-3.0.dtd">
 5 
 6 <hibernate-mapping package="com.wishwzp.model">
 7 
 8     <class name="Book" table="t_book">
 9         <id name="id" column="bookId">
10             <generator class="native">generator>
11         id>
12         
13         <property name="bookName" column="bookName" length="40">property>
14         <property name="price" column="price" type="float">property>
15         <property name="specialPrice" column="specialPrice" type="boolean">property>
16         <property name="publishDate" column="publishDate" type="date">property>
17         <property name="author" column="author" length="20">property>
18         <property name="introduction" column="introduction" type="text">property>
19         <property name="bookPic" column="bookPic" type="blob">property>
20     class>
21 
22 hibernate-mapping>

 BookTest.java

 1 package com.wishwzp.service;
 2 
 3 import java.io.FileInputStream;
 4 import java.io.InputStream;
 5 import java.sql.Blob;
 6 import java.text.SimpleDateFormat;
 7 
 8 import org.hibernate.LobHelper;
 9 import org.hibernate.Session;
10 import org.hibernate.SessionFactory;
11 
12 import com.wishwzp.model.Book;
13 import com.wishwzp.util.HibernateUtil;
14 
15 public class BookTest {
16     
17     public static void main(String[] args) throws Exception{
18         SessionFactory sessiOnFactory=HibernateUtil.getSessionFactory();
19         Session session=sessionFactory.openSession(); // 生成一个session
20         session.beginTransaction(); // 开启事务
21         
22         Book book=new Book();
23         book.setBookName("java编程思想");
24         book.setPrice(100);
25         book.setSpecialPrice(true);
26         book.setPublishDate(new SimpleDateFormat("yyyy-MM-dd").parse("2013-1-1"));
27         book.setAuthor("埃克尔");
28         book.setIntroduction("简介...");
29         
30         //
31         LobHelper lobHelper=session.getLobHelper();
32         InputStream in=new FileInputStream("c://java编程思想.jpg");
33         Blob bookPic=lobHelper.createBlob(in, in.available());
34         book.setBookPic(bookPic);
35        
36         session.save(book);
37         
38         session.getTransaction().commit(); // 提交事务
39         session.close(); // 关闭session
40      
41     }
42 }

 HibernateUtil.java

 1 package com.wishwzp.util;
 2 
 3 import org.hibernate.SessionFactory;
 4 import org.hibernate.boot.registry.StandardServiceRegistryBuilder;
 5 import org.hibernate.cfg.Configuration;
 6 import org.hibernate.service.ServiceRegistry;
 7 
 8 /**
 9  * 
10  * hibernate封装
11  * @author wishwzp
12  *
13  */
14 public class HibernateUtil {
15     
16     private static final SessionFactory sessiOnFactory=buildSessionFactory();
17 
18     /**
19      * 绑定SessionFactory
20      * @return
21      */
22     private static SessionFactory buildSessionFactory(){
23         // 实例化配置文件
24         Configuration cOnfiguration=new Configuration().configure(); 
25         // 实例化服务登记
26         ServiceRegistry serviceRegistry=new StandardServiceRegistryBuilder().applySettings(configuration.getProperties()).build();
27         //获取Session工厂
28         return configuration.buildSessionFactory(serviceRegistry);
29     }
30     
31     public static SessionFactory getSessionFactory(){
32         return sessionFactory;
33     }
34 }

第二节:集合类型映射

hibernate.cfg.xml

 1 xml version=‘1.0‘ encoding=‘utf-8‘?>
 2 DOCTYPE hibernate-configuration PUBLIC
 3         "-//Hibernate/Hibernate Configuration DTD 3.0//EN"
 4         "http://www.hibernate.org/dtd/hibernate-configuration-3.0.dtd">
 5 
 6 <hibernate-configuration>
 7 
 8     <session-factory>
 9 
10         
11         <property name="connection.driver_class">com.mysql.jdbc.Driverproperty>
12         <property name="connection.url">jdbc:mysql://localhost:3306/hibernateproperty>
13         <property name="connection.username">rootproperty>
14         <property name="connection.password">123456property>
15 
16        
17         
18         <property name="dialect">org.hibernate.dialect.MySQL5Dialectproperty>
19     
20         
21         <property name="show_sql">trueproperty>
22 
23         
24         <property name="hbm2ddl.auto">updateproperty>
25         
26           <mapping resource="com/wishwzp/model/Student.hbm.xml"/>
27           <mapping resource="com/wishwzp/model/Student2.hbm.xml"/>
28           <mapping resource="com/wishwzp/model/Student3.hbm.xml"/>
29           <mapping resource="com/wishwzp/model/Student4.hbm.xml"/>
30 
31     session-factory>
32 
33 hibernate-configuration>

1,Set 无序元素不可重复

Student.java

 1 package com.wishwzp.model;
 2 
 3 import java.util.Set;
 4 
 5 public class Student {
 6 
 7     private long id;
 8     private String name;
 9     private Set images;
10     
11     public long getId() {
12         return id;
13     }
14     public void setId(long id) {
15         this.id = id;
16     }
17     public String getName() {
18         return name;
19     }
20     public void setName(String name) {
21         this.name = name;
22     }
23     public Set getImages() {
24         return images;
25     }
26     public void setImages(Set images) {
27         this.images = images;
28     }
29     
30     
31     
32     
33 }

Student.hbm.xml

 1 xml version="1.0"?>
 2 DOCTYPE hibernate-mapping PUBLIC
 3         "-//Hibernate/Hibernate Mapping DTD 3.0//EN"
 4         "http://www.hibernate.org/dtd/hibernate-mapping-3.0.dtd">
 5 
 6 <hibernate-mapping package="com.wishwzp.model">
 7 
 8     <class name="Student" table="t_student">
 9         <id name="id" column="stuId">
10             <generator class="native">generator>
11         id>
12         
13         <property name="name" column="stuName">property>
14         
15         <set name="images" table="t_image">
16             <key column="studentId">key>
17             <element column="imageName" type="string">element>
18         set>
19     class>
20 
21 hibernate-mapping>

2,List 有序元素可重复

Studnet2.java

 1 package com.wishwzp.model;
 2 
 3 import java.util.List;
 4 
 5 public class Student2 {
 6 
 7     private long id;
 8     private String name;
 9     private List images;
10     
11     public long getId() {
12         return id;
13     }
14     public void setId(long id) {
15         this.id = id;
16     }
17     public String getName() {
18         return name;
19     }
20     public void setName(String name) {
21         this.name = name;
22     }
23     public List getImages() {
24         return images;
25     }
26     public void setImages(List images) {
27         this.images = images;
28     }
29     
30 }

Student2.hbm.xml

 1 xml version="1.0"?>
 2 DOCTYPE hibernate-mapping PUBLIC
 3         "-//Hibernate/Hibernate Mapping DTD 3.0//EN"
 4         "http://www.hibernate.org/dtd/hibernate-mapping-3.0.dtd">
 5 
 6 <hibernate-mapping package="com.wishwzp.model">
 7 
 8     <class name="Student2" table="t_student">
 9         <id name="id" column="stuId">
10             <generator class="native">generator>
11         id>
12         
13         <property name="name" column="stuName">property>
14         
15         <list name="images" table="t_image2">
16             <key column="studentId">key>
17             <list-index column="imageIndex">list-index>
18             <element column="imageName" type="string">element>
19         list>
20     class>
21 
22 hibernate-mapping>

3,Bag 无序元素可重复

Student3.java

 1 package com.wishwzp.model;
 2 
 3 import java.util.List;
 4 
 5 public class Student3 {
 6 
 7     private long id;
 8     private String name;
 9     private List images;
10     
11     public long getId() {
12         return id;
13     }
14     public void setId(long id) {
15         this.id = id;
16     }
17     public String getName() {
18         return name;
19     }
20     public void setName(String name) {
21         this.name = name;
22     }
23     public List getImages() {
24         return images;
25     }
26     public void setImages(List images) {
27         this.images = images;
28     }
29     
30 }

Student3.hbm.xml

 1 xml version="1.0"?>
 2 DOCTYPE hibernate-mapping PUBLIC
 3         "-//Hibernate/Hibernate Mapping DTD 3.0//EN"
 4         "http://www.hibernate.org/dtd/hibernate-mapping-3.0.dtd">
 5 
 6 <hibernate-mapping package="com.wishwzp.model">
 7 
 8     <class name="Student3" table="t_student">
 9         <id name="id" column="stuId">
10             <generator class="native">generator>
11         id>
12         
13         <property name="name" column="stuName">property>
14         
15         <idbag name="images" table="t_image3">
16             <collection-id type="long" column="imageId">
17                 <generator class="increment">generator>
18             collection-id>
19             <key column="studentId">key>
20             <element column="imageName" type="string">element>
21         idbag>
22         
23     
24     class>
25 
26 hibernate-mapping>

4,Map 键值对

Student4.java

 1 package com.wishwzp.model;
 2 
 3 import java.util.Map;
 4 
 5 public class Student4 {
 6 
 7     private long id;
 8     private String name;
 9     private Map images;
10     
11     public long getId() {
12         return id;
13     }
14     public void setId(long id) {
15         this.id = id;
16     }
17     public String getName() {
18         return name;
19     }
20     public void setName(String name) {
21         this.name = name;
22     }
23     public Map getImages() {
24         return images;
25     }
26     public void setImages(Map images) {
27         this.images = images;
28     }
29     
30 }

Student4.hbm.xml 

 1 xml version="1.0"?>
 2 DOCTYPE hibernate-mapping PUBLIC
 3         "-//Hibernate/Hibernate Mapping DTD 3.0//EN"
 4         "http://www.hibernate.org/dtd/hibernate-mapping-3.0.dtd">
 5 
 6 <hibernate-mapping package="com.wishwzp.model">
 7 
 8     <class name="Student4" table="t_student">
 9         <id name="id" column="stuId">
10             <generator class="native">generator>
11         id>
12         
13         <property name="name" column="stuName">property>
14         
15         <map name="images" table="t_image4">
16             <key column="studentId">key>
17             <map-key column="imageKey" type="string">map-key>
18             <element column="imageName" type="string">element>
19         map>
20         
21     
22     class>
23 
24 hibernate-mapping>

上面4种情况的总测试类:

StudentTest.java

  1 package com.wishwzp.service;
  2 
  3 import java.util.ArrayList;
  4 import java.util.HashMap;
  5 import java.util.HashSet;
  6 import java.util.Iterator;
  7 import java.util.List;
  8 import java.util.Map;
  9 import java.util.Set;
 10 
 11 import org.hibernate.Session;
 12 import org.hibernate.SessionFactory;
 13 import org.junit.After;
 14 import org.junit.Before;
 15 import org.junit.Test;
 16 
 17 import com.wishwzp.model.Student;
 18 import com.wishwzp.model.Student2;
 19 import com.wishwzp.model.Student3;
 20 import com.wishwzp.model.Student4;
 21 import com.wishwzp.util.HibernateUtil;
 22 
 23 public class StudentTest {
 24 
 25     private SessionFactory sessiOnFactory=HibernateUtil.getSessionFactory();
 26     private Session session;
 27     
 28     @Before
 29     public void setUp() throws Exception {
 30         session=sessionFactory.openSession(); // 生成一个session
 31         session.beginTransaction(); // 开启事务
 32     }
 33 
 34     @After
 35     public void tearDown() throws Exception {
 36          session.getTransaction().commit(); // 提交事务
 37          session.close(); // 关闭session
 38     }
 39 
 40     //1、Set 无序元素不可重复
 41     @Test
 42     public void testSetSave(){
 43         Set imageSet=new HashSet();
 44         imageSet.add("image1.png");
 45         imageSet.add("image2.png");
 46         imageSet.add("image3.png");
 47         imageSet.add("image3.png");//这里有重复,但在数据库里面只有一个image3.png并且是无序的。。。所以set元素不可重复
 48         
 49         Student s1=new Student();
 50         s1.setImages(imageSet);
 51         session.save(s1);
 52     }
 53     
 54     //打印出来Student表id为1的images表的所有image信息
 55     @Test
 56     public void testSetFetch(){
 57         Student student=(Student)session.get(Student.class, Long.valueOf(1));
 58         Iterator it=student.getImages().iterator();
 59         while(it.hasNext()){
 60             System.out.println(it.next());
 61         }
 62     }
 63     
 64     //2、List 有序元素可重复
 65     @Test
 66     public void testListSave(){
 67         List imageList=new ArrayList();
 68         imageList.add("image1.png");
 69         imageList.add("image2.png");
 70         imageList.add("image3.png");
 71         imageList.add("image3.png");//这里有重复,数据库里面也可以有两个image3.png并且是有序的。。。所以list元素可重复
 72         
 73         Student2 s2=new Student2();
 74         s2.setImages(imageList);
 75         session.save(s2);
 76     }
 77     
 78     //打印出来Student表id为1的images表的所有image信息
 79     @Test
 80     public void testListFetch(){
 81         Student2 student2=(Student2)session.get(Student2.class, Long.valueOf(2));
 82         Iterator it=student2.getImages().iterator();
 83         while(it.hasNext()){
 84             System.out.println(it.next());
 85         }
 86     }
 87     
 88     //3、Bag 无序元素可重复
 89     @Test
 90     public void testBagSave(){
 91         List imageList=new ArrayList();
 92         imageList.add("image1.png");
 93         imageList.add("image2.png");
 94         imageList.add("image3.png");
 95         imageList.add("image3.png");//这里有重复,数据库里面也有两个image3.png而且是无序的。。。所以Bag 无序元素可重复
 96         
 97         Student3 s3=new Student3();
 98         s3.setImages(imageList);
 99         session.save(s3);
100     }
101     
102     
103     @Test
104     public void testBagFetch(){
105         Student3 student3=(Student3)session.get(Student3.class, Long.valueOf(3));
106         Iterator it=student3.getImages().iterator();
107         while(it.hasNext()){
108             System.out.println(it.next());
109         }
110     }
111     
112     //4、Map 键值对
113     @Test
114     public void testMapSave(){
115         Map imageMap=new HashMap();
116         imageMap.put("i1", "image1.png");
117         imageMap.put("i2", "image2.png");
118         imageMap.put("i3", "image3.png");
119         imageMap.put("i4", "image4.png");//这里都是键值对的
120         
121         Student4 s4=new Student4();
122         s4.setImages(imageMap);
123         session.save(s4);
124     }
125     
126     
127     @Test
128     public void testMapFetch(){
129         Student4 student4=(Student4)session.get(Student4.class, Long.valueOf(4));
130         Map imageMap=student4.getImages();
131         Set keys=imageMap.keySet();
132         Iterator it=keys.iterator();
133         while(it.hasNext()){
134             String key=(String)it.next();
135             System.out.println(key+":"+imageMap.get(key));
136         }
137     }
138 
139 }

结果显示:

1,Set 无序元素不可重复

testSetSave()方法:

技术分享


技术分享

技术分享


技术分享

技术分享

testSetFech()方法:

技术分享

2,List 有序元素可重复

testListSave()方法:

技术分享


技术分享

技术分享


技术分享

技术分享

testListFech()方法:

技术分享

3,Bag 无序元素可重复

testBagSave()方法:

技术分享


技术分享

技术分享


技术分享

技术分享

testBagFech()方法:

技术分享

4,Map 键值对

testMapSave()方法:

技术分享


技术分享

技术分享


技术分享

技术分享

testMapFech()方法:

技术分享

所有表之间的关系:

技术分享

(六)Hibernate 映射类型


推荐阅读
  • 本文旨在提供一套高效的面试方法,帮助企业在短时间内找到合适的产品经理。虽然观点较为直接,但其方法已被实践证明有效,尤其适用于初创公司和新项目的需求。 ... [详细]
  • 在成功安装和测试MySQL及Apache之后,接下来的步骤是安装PHP。为了确保安全性和配置的一致性,建议在安装PHP前先停止MySQL和Apache服务,并将MySQL集成到PHP中。 ... [详细]
  • 解决Anaconda安装TensorFlow时遇到的TensorBoard版本问题
    本文介绍了在使用Anaconda安装TensorFlow时遇到的“Could not find a version that satisfies the requirement tensorboard”错误,并提供详细的解决方案,包括创建虚拟环境和配置PyCharm项目。 ... [详细]
  • 阿里云ecs怎么配置php环境,阿里云ecs配置选择 ... [详细]
  • 在项目部署后,Node.js 进程可能会遇到不可预见的错误并崩溃。为了及时通知开发人员进行问题排查,我们可以利用 nodemailer 插件来发送邮件提醒。本文将详细介绍如何配置和使用 nodemailer 实现这一功能。 ... [详细]
  • C#设计模式学习笔记:观察者模式解析
    本文将探讨观察者模式的基本概念、应用场景及其在C#中的实现方法。通过借鉴《Head First Design Patterns》和维基百科等资源,详细介绍该模式的工作原理,并提供具体代码示例。 ... [详细]
  • 如何清除Chrome浏览器地址栏的特定历史记录
    在使用Chrome浏览器时,你可能会发现地址栏保存了大量浏览记录。有时你可能希望删除某些特定的历史记录而不影响其他数据。本文将详细介绍如何单独删除地址栏中的特定记录以及批量清除所有历史记录的方法。 ... [详细]
  • 哈密顿回路问题旨在寻找一个简单回路,该回路包含图中的每个顶点。本文将介绍如何判断给定的路径是否构成哈密顿回路。 ... [详细]
  • 本文详细介绍如何利用已搭建的LAMP(Linux、Apache、MySQL、PHP)环境,快速创建一个基于WordPress的内容管理系统(CMS)。WordPress是一款流行的开源博客平台,适用于个人或小型团队使用。 ... [详细]
  • JavaScript 中创建对象的多种方式
    本文介绍了 JavaScript 中创建对象的几种常见方法,包括字面量形式、构造函数、原型对象等。每种方法都有其特点和适用场景,通过对比分析,帮助开发者选择最适合的方式。 ... [详细]
  • 本文探讨了在使用Selenium进行自动化测试时,由于webdriver对象实例化位置不同而导致浏览器闪退的问题,并提供了详细的代码示例和解决方案。 ... [详细]
  • 在使用STM32Cube进行定时器配置时,有时会遇到延时不准的问题。本文探讨了可能导致延时不准确的原因,并提供了解决方法和预防措施。 ... [详细]
  • 深入理解Lucene搜索机制
    本文旨在帮助读者全面掌握Lucene搜索的编写步骤、核心API及其应用。通过详细解析Lucene的基本查询和查询解析器的使用方法,结合架构图和代码示例,带领读者深入了解Lucene搜索的工作流程。 ... [详细]
  • Python 内存管理机制详解
    本文深入探讨了Python的内存管理机制,涵盖了垃圾回收、引用计数和内存池机制。通过具体示例和专业解释,帮助读者理解Python如何高效地管理和释放内存资源。 ... [详细]
  • Appium + Java 自动化测试中处理页面空白区域点击问题
    在进行移动应用自动化测试时,有时会遇到某些页面没有返回按钮,只能通过点击空白区域返回的情况。本文将探讨如何在Appium + Java环境中有效解决此类问题,并提供详细的解决方案。 ... [详细]
author-avatar
枫涵笑
这个家伙很懒,什么也没留下!
PHP1.CN | 中国最专业的PHP中文社区 | DevBox开发工具箱 | json解析格式化 |PHP资讯 | PHP教程 | 数据库技术 | 服务器技术 | 前端开发技术 | PHP框架 | 开发工具 | 在线工具
Copyright © 1998 - 2020 PHP1.CN. All Rights Reserved | 京公网安备 11010802041100号 | 京ICP备19059560号-4 | PHP1.CN 第一PHP社区 版权所有