hibernate 关系映射| 耗时:0.169秒|14539条结果

hibernate 映射关系-集合映射

1、集合映射简介 当持久化类中有一个值类型的集合,那么就需要一张额外的数据库表来保存这个值类型集合的数据,这张表被称为集合表。比如有一张学生表,学生可能有很多爱好,就需要一种学生爱好集合表来存储学生的爱好信息。 Hibernate支持大部分重要的JDK集合接口映射,主要有以下几种。 1.
http://www.itnose.net/detail/6300197.html 2015-06-19 10:47   [Hibernate]

hibernate映射关系

hibernate的多对一关系 ,然后通过多方表查询出了一方和多方的不同字段,现在要模糊查询 通过一方的字段,进行查询。有点懵,又想通过一对多关系的配置,一方却是主键。求大神教导。 回复讨论(解决方案)
http://www.itnose.net/detail/6676655.html 2016-12-02 22:36   [JavaWeb]

Hibernate -- 映射关联关系

Hibernate如何映射 单双向的多对一,基于外键、基于主键的一对一,以及单双向的多对多的关联关系。包括在 Intellij Idea下如何操作,以及各个类型映射下的 CRUR 以及需要注意的地方。 没有介绍 Hibernate 是如何映射继承关系,是因为在真实的生产环境下还没有遇到这种情况,这里不做说明。 文章
http://www.itnose.net/detail/6653486.html 2016-10-12 21:49   [J2SE]

Hibernate学习--映射关系

学习记录 O(∩_∩)O 、 如果你恰巧路过,希望你能停下脚步瞧一瞧,不足之处望指出,感激不尽~ 使用工具:   1、eclipse   2、hibernate压缩包(hibernate_4.3.11) 3、mysql   准备工作: 创建工程——>导入hibernate.jar包——>编写 hibernate.cfg.xml 配置文件 连接数据库         编写一个类读取hibernate.cfg.xml   一、单向一对多(例子:一个部门有多个员工)     1、建表(Employee员工表和dpet部门表)        ①Employee类     ② 配置Employee.hbm.xml 映射文件,并在hibernate.cfg.xml文件中注册( <mapping resource="com/sw/entity/Employee.hbm.xml"/>)     ③ Dept类     ④ Dept.hbm.xml配置文件,并在hibernate.cfg.xml文件中注册( <mapping resource="com/sw/entity/Dept.hbm.xml"/>)   ⑤、创建表方法   2、添加数据:先添加多端数据,再添加一端数据,再让多端中的数据与一端数据进行关联,在数据库中,会先执行insert语句,再执行update语句修改关联关系,效率偏低    
http://www.itnose.net/detail/6632151.html 2016-08-25 20:51   [J2SE]

Hibernate框架关系映射

; import java.util.HashSet; import java.util.List; import java.util.Set; public class Grade implements Serializable { private Integer gid;//班级编号 private String gname;//班级名称 private String gdesc;//班级描述 public Grade() { } public Grade(String gname, String gdesc) { this.gname = gname; this.gdesc = gdesc; } public Integer getGid() { return gid; } public void setGid(Integer gid) { this.gid = gid; } public String getGname() { return gname; } public void setGname(String gname) { this.gname = gname; } public String getGdesc() { return gdesc; } public void setGdesc(String gdesc) { this.gdesc = gdesc; } }   一对多的话,应该是比较好理解的,因为我们可以理解为下载   一个班级可以以对应多个学生,这就是一对多,既然一个班级对应多个学生的话,那么我们是不是就可以在班级的实体类 中加入一个学生集合和呢?这样是不是更能体现出一对多的关系呢?所以我们对班级实体就有了下面的改造下载 package entity; import java.io.Serializable; import java.util.HashSet; import java.util.List; import java.util.Set; public class Grade implements Serializable { private Integer gid;//年级编号 private String gname;//年级名称 private String gdesc;//年级描述 //添加一个班级里的学生集合 private Set<Student> stus=new HashSet<Student>(); public Set<Student> getStus() { return stus; } public void setStus(Set<Student> stus) { this.stus = stus; } public Grade() { } public Grade(String gname, String gdesc) { this.gname = gname; this.gdesc = gdesc; } public Integer getGid() { return gid; } public void setGid(Integer gid) { this.gid = gid; } public String getGname() { return gname; } public void setGname(String gname) { this.gname = gname; } public String getGdesc() { return gdesc; } public void setGdesc(String gdesc) { this.gdesc = gdesc; } }   实体类写完了,我们就该写最关键的配置文件也就是映射文件了(Grade.hbm.xml)下载 <?xml version="1.0"?> <!DOCTYPE hibernate-mapping PUBLIC "-//Hibernate/Hibernate Mapping DTD 3.0//EN" "http://www.hibernate.org/dtd/hibernate-mapping-3.0.dtd"> <!-- 对应所在的包 --> <hibernate-mapping package="entity"> <!-- 实体类和数据表的名称 --> <class name="Grade" table
http://www.itnose.net/detail/6624097.html 2016-08-12 09:26   [Hibernate]

4.3 Hibernate关系映射

    Hibernate关系映射的主要任务是实现数据库关系表与持久化类之间的映射。 1.一对一关联     有两种实现方式:共享主键方式(使两个数据表的主键使用相同的值,通过主键形成一对一映射关系)和唯一外键方式
http://www.itnose.net/detail/6460618.html 2016-03-01 09:09   [Hibernate]

hibernate 多对多关系映射

;   return address;     }     public void setAddress(String address) {         this.address = address;     }     public Set<Employee> getEmployees() {         return employees;     }     public void setEmployees(Set<Employee> employees) {         this.employees = employees;     } } 映射文件: <?xml version="1.0"?>     <!DOCTYPE hibernate-mapping PUBLIC      "-//Hibernate/Hibernate Mapping DTD 3.0//EN"     "http://www.hibernate.org/dtd/hibernate-mapping-3.0.dtd">      <hibernate-mapping>     <class name="com.hibernate.many2many.entity.Employee" table="t_employee">               <id name="id">               <generator class="native"/>           </id>                    <property name="name" type="string"></property>                   <!-- 多对多关系,key是中间表的外键, inverse="true"表示由对方维护-->         <set name="companies" table="t_company" inverse="true">             <key column="e_id"></key>             <many-to-many class="com.hibernate.many2many.entity.Company" column="c_id"></many-to-many>         </set>           </class> </hibernate-mapping> <?xml version="1.0"?>     <!DOCTYPE hibernate-mapping PUBLIC      "-//Hibernate/Hibernate Mapping DTD 3.0//EN"     "http://www.hibernate.org/dtd/hibernate-mapping-3.0.dtd">      <hibernate-mapping>     <class name="com.hibernate.many2many.entity.Company" table="t_company">               <id name="id">               <generator class="native"/>           </id>                    <property name="name" type="string"></property>         <property name="address" type="string"></property>                  <!-- 多对多关系,key是中间表的外键 -->         <set name="employees" table="t_employee" cascade="all">             <key column="c_id"></key>             <many-to-many class="com.hibernate.many2many.entity.Employee" column="e_id"></many-to-many>         </set>           </class> </hibernate-mapping>
http://www.itnose.net/detail/6381416.html 2015-10-02 22:09   [Hibernate]

Hibernate对象映射关系:多对多

;    } } 三:项目配置文件 Course.hbm.xml <?xml version="1.0"encoding="utf-8"?> <!DOCTYPE hibernate-mapping PUBLIC "
http://www.itnose.net/detail/6353420.html 2015-08-22 14:35   [Hibernate]

Hibernate many2many映射关系

多对多映射关系: 开发步骤: JavaBean 映射文件  测试 图片详解: 1.javaBean  Project.java package cn.itcast.many2many; import java.util.HashSet; import java.util.Set; public class Project { private int proj_id; @Override public String toString() { return "Project [proj_id=" + proj_id + ", proj_name=" + proj_name + ", developers=" + developers + "]"; } private String proj_name; private Set<Developer> developers=new HashSet<Developer>(); public int getProj_id() { return proj_id; } public void setProj_id(int proj_id) { this.proj_id = proj_id; } public String getProj_name() { return proj_name; } public void setProj_name(String proj_name) { this.proj_name = proj_name; } public Set<Developer> getDevelopers() { return developers; } public void setDevelopers(Set<Developer> developers) { this.developers = developers; } } Employee.java package cn.itcast.many2many; import java.util.HashSet; import java.util.Set; public class Developer { @Override public String toString() { return "Developer [d_id=" + d_id + ", d_name=" + d_name + ", projects=" + projects + "]"; } private int d_id; private String d_name; private Set<Project> projects=new HashSet<Project>(); public int getD_id() { return d_id; } public void setD_id(int d_id) { this.d_id = d_id; } public String getD_name() { return d_name; } public void setD_name(String d_name) { this.d_name = d_name; } public Set<Project> getProjects() { return projects; } public void setProjects(Set<Project> projects) { this.projects = projects; } } 2.配置文件 多对多的关系映射 1.映射的集合属性 2.属性对应的中间表 3.外键字段 projid 4.外键字段对应的中间表属性did 5.集合属性元素的类型 Project.hbm.xml <?xml version="1.0"?> <!DOCTYPE hibernate-mapping PUBLIC "-//Hibernate/Hibernate Mapping DTD 3.0//EN" "http://www.hibernate.org/dtd/hibernate-mapping-3.0.dtd"> <hibernate-mapping package="cn.itcast.many2many" auto-import="true"> <class name="Project"> <id name="proj_id"> <generator class="native"></generator> </id> <property name="proj_name" column="proj_name" length="20" type="string"></property> <!-- 多对多的关系映射 1.映射的集合属性 2.属性对应的中间表 3.外键字段 projid 4.外键字段对应的中间表属性did 5.集合属性元素的类型 --> <set name="developers" table="t_relation" cascade="save-update" inverse="true"> <key column="projid"></key> <many-to-many class="Developer" column="did"></many-to-many> </set> </class> </hibernate-mapping>Developer.hbm.xml <?xml version="1.0"?> <!DOCTYPE hibernate-mapping PUBLIC "-//Hibernate/Hibernate Mapping DTD 3.0//EN" "http://www.hibernate.org/dtd/hibernate-mapping-3.0.dtd"> <hibernate-mapping package="cn.itcast.many2many" auto-import="true"> <class name="Developer"> <id name="d_id"> <generator class="native"></generator> </id> <property name="d_name" column="d_name" length="20" type="string"></property> <!-- 这里配置的是多对多的关系映射 --> <set name="projects" table="t_relation"> <key column="did"></key> <many-to-many class="Project" column="projid"></many-to-many> </set> </class> </hibernate-mapping> 测试类: package cn.itcast.many2many; import org.hibernate.Transaction; import org.hibernate.classic.Session; import org.junit.Test; import cn.itcast.utils.HibernateUtil; public class App { @Test public void test(){ Session session = HibernateUtil.getSession(); Transaction transaction = session.beginTransaction(); //通过项目表维护员工表 //1.项目表 Project proj=new Project(); proj.setProj_name("OA项目"); Project proj2=new Project(); proj2.setProj_name("ERP系统"); //2.员工表 Developer dev_lwk=new Developer(); dev_lwk.setD_name("李卫康"); Developer dev_hw=new Developer(); dev_hw.setD_name("韩玮"); Developer dev_ccs=new Developer(); dev_ccs.setD_name("程崇树"); //3.关系 proj.getDevelopers().add(dev_lwk); proj.getDevelopers().add(dev_hw); proj2.getDevelopers().add(dev_lwk); proj2.getDevelopers().add(dev_ccs); session.save(proj); session.save(proj2); transaction.commit(); session.close(); } } 运行测试得到的数据库表: t_relation的外键 版权声明:本文为博主原创文章,未经博主允许不得转载。
http://www.itnose.net/detail/6328760.html 2015-07-28 10:41   [Hibernate]

Hibernate One2Many映射关系

多对一映射与一对多映射: 使用部门和员工的关系来说明问题.一个部门可以有多个员工,但是一个员工只属于一个部门. 开发步骤: (1)JavaBean的设计,Dept(部门表) Employee(员工表) (2)映射关系 (3)测试 1.Dept和Employee Javabean
http://www.itnose.net/detail/6328507.html 2015-07-28 00:29   [Hibernate]

Hibernate映射关系

前言 首先声明,这是一篇转发博客,不属于原创。但是感觉很有用,所以在本人的博客中记录下来。 Hibernate Annotation关系映射有下面几种类型: 一对一外键关联映射(单向) java@OneToOne(cascade=CascadeType.ALL) @JoinColumn(name
http://www.itnose.net/detail/6316304.html 2015-07-12 17:09   [Hibernate]

hibernate关联关系映射

    本文将介绍hibernate的几种关联关系映射:多对一、一对一、一对多、多对多。 多对一 以用户和组为例,假设多个用户对应一个组,用户即为多的一端,组即为一的一端。 关键代码和配置: 用户: public class User implements
http://www.itnose.net/detail/6194892.html 2015-01-18 20:47   [Hibernate]

Hibernate对象关系映射(一)

Hibernate的本质是对象关系映射,ORM实现了将对象的变化保存到数据库中。以前我们对关系表操作,执行增CRUD。现在我们不在对关系表进行操作,而是直接对对象操作。对象关系映射有以下几种 基本图形 图1 一对一映射 分两种情况 主键 唯一外键 1主键  两个对象具有相同的主键,不再有额外字段维护他们的关系 图2  Person和Card之间,他们的主键是相同的 2唯一外键 其实是用来表示多对一的,如果加上唯一限制,就可以表示一对一关联   图3   图3可以看到卡号在person中充当了一个外键。 根据分类的情况,还可以更细致的划分,每个分类都对应着一种单向和双向的选择,就是图1。 认识了基本的一对一关系映射,我们在开看看他们的配置关系,重点还是在Hibernate.hbm.xml文件的配置 1.1主键单向关联 <classname="com.bjpowernode.hibernate.Person"table="t_person"> <idname="id"> <!--采用foreign生成策略,foreign会取得关联对象的标识 --> <generatorclass="foreign" > <!--property指的是关联对象。 --> <paramname="property">idCard</param> </generator> </id> <propertyname="name"/> <!--一对一关联映射,主键关联. --> <!-- one-to-one标签指示hibernate如何加载其关联对象,默认根据主键加载. 也就是拿到关系字段值,根据对端的主键来加载关联对象. constrained="true",表示当前主键(Person的主键)还是一个外键. 参照了对端的主键(IdCard的主键),也就是会生成外键约束语句. --> <one-to-onename="idCard" constrained="true"/> </class> IdCard.hbm.xml <hibernate-mappingpackage="org.hibernate.auction"> <classname="com.bjpowernode.hibernate.IdCard" table="t_idCard"> <idname="id"> <generatorclass="native" /> </id> <propertyname="cardNo"/> </class> </hibernate-mapping> 1.2主键双向关联 因为是单向,所以只要一端进行维护。 区别是一对一双向主键关联与一对一单向主键关联的区别就是,一对一单向主键关联,在person端能看到idCard,而idCard不能看到Person端。而双向关联就是在idCard端也能看到person,也就是不但在Person.hbm.xml中加上<one-to-one>标签,同时在IdCard.hbm.xml文件中加上<one-to-one>标签。 <hibernate-mappingpackage="org.hibernate.auction"> <classname="com.bjpowernode.hibernate.IdCard" table="t_idCard"> <id name="id"> <generator class="native"/> </id> <property name="cardNo"/> <one-to-onename="person"/> </class> </hibernate-mapping> 2.1唯一外键单向关联 一对一单向唯一外键关联,也就是多对一关联的特例,把多的一端限制为一,就是一对一唯一外键关联。同多对一一样,在一端加入另一端的并采用<many-to-one>标签,通过unique="true",这样来限制了多的一端为一。 IdCard.hbm.xml <hibernate-mappingpackage="org.hibernate.auction"> <classname="com.bjpowernode.hibernate.IdCard" table="t_idCard"> <id name="id"> <generator class="native"/> </id> <property name="cardNo"/> </class> </hibernate-mapping> Person.hbm.xml <hibernate-mappingpackage="org.hibernate.auction"> <classname="com.bjpowernode.hibernate.Person" table="t_person"> <id name="id"> <!-- 采用foreign生成策略,foreign会取得关联对象的标识--> <generator class="native"/> </id> <property name="name"/> <many-to-one name="idCard"unique="true"></many-to-one> </class> </hibernate-mapping> 双向关联是在在没有的一端加上就可以了。我们的IdCard.hbm.xml中采用<one-to-one>标签 小结:  综上所述,可以看出,同一类映射,无论是单向还是双向,他们的存储结构是相同的,之所以映射文件不同,是因为加载时不同(在增删改时)。如:A对B,A就是主动方,A主动想要了解B的情况,这样把B设置到A端  
http://www.itnose.net/detail/6162876.html 2014-12-01 00:07   [Hibernate]

Hibernate4.x之映射关系多对多

n-n的关联关系分为以下两类:   1.单向n-n关联关系: n-n的关联必须使用连接表 与1-n映射类似,必须为set集合元素添加key子元素,指定CATEGORIES_ITEMS表中参照CATEGORIES表的外键为CATEGORIY_ID。与1-n关联映射不同的是,建立n-n关联时,集合中的元素使用many-to-many。many-to-many子元素的class属性指定items接种存放的是Item对象,column属性指定CATEGORIES_ITEMS表中参照ITEMS表的外键为ITEM_ID    --------------------------------代码-------------------------------------------------------- Category.hbm.xml 1 <?xml version="1.0"?> 2 <!DOCTYPE hibernate-mapping PUBLIC "-//Hibernate/Hibernate Mapping DTD 3.0//EN" 3 "http://hibernate.sourceforge.net/hibernate-mapping-3.0.dtd"> 4 <!-- Generated 2014-11-29 21:45:04 by Hibernate Tools 3.4.0.CR1 --> 5 <hibernate-mapping package="com.yl.hibernate.n2n"> 6 <class name="Category" table="CATEGORYS"> 7 <id name="id" type="java.lang.Integer"> 8 <column name="ID" /> 9 <generator class="native" /> 10 </id> 11 <property name="name" type="java.lang.String"> 12 <column name="NAME" /> 13 </property> 14 <!-- table:指定中间表 --> 15 <set name="items" table="CATEGORIRIES_ITEMS" inverse="false" lazy="true"> 16 <key> 17 <column name="C_ID" /> 18 </key> 19 <!-- 使用many-to-many 指定多对多的关联关系, column指定set集合中的持久化类在中间表的外键列的名称 --> 20 <many-to-many class="Item" column="I_ID"/> 21 </set> 22 </class> 23 </hibernate-mapping> Item.hbm.xml 1 <?xml version="1.0"?> 2 <!DOCTYPE hibernate-mapping PUBLIC "-//Hibernate/Hibernate Mapping DTD 3.0//EN" 3 "http://hibernate.sourceforge.net/hibernate-mapping-3.0.dtd"> 4 <!-- Generated 2014-11-29 21:45:04 by Hibernate Tools 3.4.0.CR1 --> 5 <hibernate-mapping> 6 <class name="com.yl.hibernate.n2n.Item" table="ITEMs"> 7 <id name="id" type="java.lang.Integer"> 8 <column name="ID" /> 9 <generator class="native" /> 10 </id> 11 <property name="name" type="java.lang.String"> 12 <column name="NAME" /> 13 </property> 14 </class> 15 </hibernate-mapping>   2.双向n-n关联关系 双向n-n关联需要两端都使用集合属性 双向n-n关联必须使用连接表 集合属性应增加key子元素用以映射外键列,集合元素里还应增加many-to-many子元素关联实体类 在双向n-n关联的两边都需指定连接表的表名及外键列的列名。两个集合元素set的table元素的值必须指定,且必须相同。set元素的两个子元素:key和many-to-many多必须指定column属性,其中,key和many-to-many分别制定本持久化类和关联类在连接表中的外键列名,因此两边的key与many-to-many的column属性交叉相同。也就是说,一边的set元素的key的column值为a,many-to-many的column为b,则另一边的set元素的key的column值为b,many-to-many的column值为a 对于双向n-n关联,必须把其中一端的inverse设置为true,否则两端都维护关联关系可能会造成逐渐冲突   Category.hbm.xml 1 <?xml version="1.0"?> 2 <!DOCTYPE hibernate-mapping PUBLIC "-//Hibernate/Hibernate Mapping DTD 3.0//EN" 3 "http://hibernate.sourceforge.net/hibernate-mapping-3.0.dtd"> 4 <!-- Generated 2014-11-29 21:45:04 by Hibernate Tools 3.4.0.CR1 --> 5 <hibernate-mapping package="com.yl.hibernate.n2n"> 6 <class name="Category" table="CATEGORYS"> 7 <id name="id" type="java.lang.Integer"> 8 <column name="ID" /> 9 <generator class="native" /> 10 </id> 11 <property name="name" type="java.lang.String"> 12 <column name="NAME" /> 13 </property> 14 <!-- table:指定中间表 --> 15 <set name="items" table="CATEGORIRIES_ITEMS" inverse="false" lazy="true"> 16 <key> 17 <column name="C_ID" /> 18 </key> 19 <!-- 使用many-to-many 指定多对多的关联关系, column指定set集合中的持久化类在中间表的外键列的名称 --> 20 <many-to-many class="Item" column="I_ID"/> 21 </set> 22 </class> 23 </hibernate-mapping>   Item.hbm.xml 1 <?xml version="1.0"?> 2 <!DOCTYPE hibernate-mapping PUBLIC "-//Hibernate/Hibernate Mapping DTD 3.0//EN" 3 "http://hibernate.sourceforge.net/hibernate-mapping-3.0.dtd"> 4 <!-- Generated 2014-11-29 21:45:04 by Hibernate Tools 3.4.0.CR1 --> 5 <hibernate-mapping> 6 <class name="com.yl.hibernate.n2n.Item" table="ITEMs"> 7 <id name="id" type="java.lang.Integer"> 8 <column name="ID" /> 9 <generator class="native" /> 10 </id> 11 <property name="name" type="java.lang.String"> 12 <column name="NAME" /> 13 </property> 14 15 <set name="categories" table="CATEGORIRIES_ITEMS" inverse="true"> 16 <key><column name="I_ID"></column></key> 17 <many-to-many class="com.yl.hibernate.n2n.Category" column="C_ID"></many-to-many> 18 </set> 19 20 </class> 21 </hibernate-mapping>   测试类: 1 package com.yl.hibernate.n2n; 2 3 4 import java.util.Set; 5 6 import org.hibernate.Session; 7 import org.hibernate.SessionFactory; 8 import org.hibernate.Transaction; 9 import org.hibernate.cfg.Configuration; 10 import org.hibernate.service.ServiceRegistry; 11 import org.hibernate.service.ServiceRegistryBuilder; 12 import org.junit.After; 13 import org.junit.Before; 14 import org.junit.Test; 15 16 public class HibernateTest { 17 18 private SessionFactory sessionFactory; 19 private Session session; 20 private Transaction transaction; 21 22 @Before 23 public void init() { 24 Configuration configuration = new Configuration().configure(); 25 ServiceRegistry serviceRegistry = 26 new ServiceRegistryBuilder().applySettings(configuration.getProperties()) 27 .buildServiceRegistry(); 28 29 sessionFactory = configuration.buildSessionFactory(serviceRegistry); 30 31 session = sessionFactory.openSession(); 32 33 transaction = session.beginTransaction(); 34 } 35 @After 36 public void destory() { 37 transaction.commit(); 38 39 session.close(); 40 41 sessionFactory.close(); 42 } 43 44 @Test 45 public void testSave() { 46 Category category1 = new Category(); 47 category1.setName("C-AA"); 48 49 Category category2 = new Category(); 50 category2.setName("C-BB"); 51 52 53 Item item1 = new Item(); 54 item1.setName("I-AA"); 55 56 Item item2 = new Item(); 57 item2.setName("I-BB"); 58 59 //设定关联关系 60 category1.getItems().add(item1); 61 category1.getItems().add(item2); 62 63 category2.getItems().add(item1); 64 category2.getItems().add(item2); 65 66 item1.getCategories().add(category1); 67 item1.getCategories().add(category2); 68 69 item2.getCategories().add(category1); 70 item2.getCategories().add(category2); 71 72 //执行保存操作 73 session.save(category1); 74 session.save(category2); 75 76 session.save(item1); 77 session.save(item2); 78 } 79 80 81 @Test 82 public void testGet() { 83 Category category = (Category) session.get(Category.class, 1); 84 System.out.println(category.getName()); 85 //需要连接中间表 86 Set<Item> items = category.getItems(); 87 System.out.println(items.size()); 88 89 } 90 91 }     
http://www.itnose.net/detail/6162441.html 2014-11-30 11:44   [J2SE]

  1  2  3  4  5 下一页>