--体现整体与部分同存同亡
--数据存储到一张表中,提交检索速度
--数据都在一张表中,不存在延迟加载的问题,使用load或get都一样
--一个类持有多个component,字段需取别名以示区分
package org.leadfar.hibernate.model; public class Person { private int id; private String name; private Address work; private Address home; Person() { } public Address getWork() { return work; } public void setWork(Address work) { this.work = work; } public Address getHome() { return home; } public void setHome(Address home) { this.home = home; } public int getId() { return id; } public void setId(int id) { this.id = id; } public String getName() { return name; } public void setName(String name) { this.name = name; } }
package org.leadfar.hibernate.model; public class Address { private String province; private String city; private String street; Address(){} public String getProvince() { return province; } public void setProvince(String province) { this.province = province; } public String getCity() { return city; } public void setCity(String city) { this.city = city; } public String getStreet() { return street; } public void setStreet(String street) { this.street = street; } }
<?xml version="1.0"?> <!DOCTYPE hibernate-mapping PUBLIC "-//Hibernate/Hibernate Mapping DTD 3.0//EN" "http://hibernate.sourceforge.net/hibernate-mapping-3.0.dtd"> <hibernate-mapping package="org.hibernate.auction"> <!-- name为实体类 table为映射到数据库中的表 lazy默认为true 延迟发出select语句,直到真正用到对象的属性(非id属性)--> <class name="org.leadfar.hibernate.model.Person" table="t_person" > <!-- id为数据库标识,作为主键 --> <id name="id"> <generator class="native"/> </id> <property name="name"/> <component name="work" class="org.leadfar.hibernate.model.Address"> <property name="province" column="work_p"/> <property name="city" column="work_c"/> <property name="street" column="work_s"/> </component> <component name="home" class="org.leadfar.hibernate.model.Address"> <property name="province" column="home_p"/> <property name="city" column="home_c"/> <property name="street" column="home_s"/> </component> </class> </hibernate-mapping>
测试
package org.leadfar.hibernate.model; import junit.framework.TestCase; import org.hibernate.Session; import org.hibernate.SessionFactory; import org.hibernate.cfg.Configuration; public class Test_Component_01 extends TestCase { public void testSave_01() throws Exception { //默认读取类路径根目录下的hibernate.cfg.xml配置文件 Configuration cfg = new Configuration().configure(); //创建SessionFactory //buildSessionFactory的时候会自动创建数据库表 SessionFactory sfactory = cfg.buildSessionFactory(); //创建Hibernate Session Session session = sfactory.openSession(); try { //开启事务 session.beginTransaction(); Person p = new Person(); p.setName("张三"); Address home = new Address(); home.setProvince("四川"); home.setCity("眉山"); home.setStreet("洪雅"); Address work = new Address(); work.setProvince("北京"); work.setCity("北京"); work.setStreet("马家堡"); p.setHome(home); p.setWork(work); session.save(p); //提交事务 session.getTransaction().commit(); } catch(Exception e) { e.printStackTrace(); //出现异常,回滚事务 session.getTransaction().rollback(); } finally { //关闭session session.close();//session关闭之后,user对象处于离线Detached状态 } } public void testLoad_01() throws Exception { //默认读取类路径根目录下的hibernate.cfg.xml配置文件 Configuration cfg = new Configuration().configure(); //创建SessionFactory //buildSessionFactory的时候会自动创建数据库表 SessionFactory sfactory = cfg.buildSessionFactory(); //创建Hibernate Session Session session = sfactory.openSession(); try { //开启事务 session.beginTransaction(); Person p = (Person)session.load(Person.class, 2); System.out.println(p.getId()+","+p.getName()+","+p.getWork().getProvince()+","+p.getHome().getProvince()); //提交事务 session.getTransaction().commit(); } catch(Exception e) { e.printStackTrace(); //出现异常,回滚事务 session.getTransaction().rollback(); } finally { //关闭session session.close();//session关闭之后,user对象处于离线Detached状态 } } }
相关推荐
《Hibernate各类映射文件与配置文件模板》是一个包含多种Hibernate映射和配置示例的压缩包,用于帮助开发者理解和使用Hibernate框架。Hibernate是Java领域的一个流行的对象关系映射(ORM)框架,它允许开发者用面向...
【Hibernate配置文件中映射元素详解】 在对象关系映射(ORM)框架Hibernate中,对象与数据库表之间的关联是通过一个XML配置文件来定义的。这个XML文件包含了映射元素,用于描述Java类如何转化为数据库中的表。映射...
3. **Hibernate配置**:配置数据库连接信息,定义实体类映射,开启自动扫描实体类。 4. **Action类**:通常标记为`@Component`,并使用`@Autowired`注解注入所需的Service或DAO。 通过这些配置,SSH能够协同工作,...
在本文中,我们将深入探讨Hibernate配置文件中的映射元素,这些元素是将对象关系映射到数据库的关键部分。首先,我们需要了解映射文件的基本结构,它通常是一个XML文档,遵循特定的DTD(文档类型定义)。 `...
3. **Component的声明**:说明如何在Hibernate的配置文件或注解中声明一个Component,包括它的类定义、属性和关联关系。 4. **Component的嵌入方式**:介绍如何在其他实体类中嵌入Component,包括使用`@Component`...
源码可能包含了`Employee`、`Address`以及其他相关类,以及对应的配置文件,如`hibernate.cfg.xml`,用以配置Hibernate的会话工厂和实体映射。 在配置文件中,组件映射不会像实体那样定义一个单独的表,而是将组件...
在Hibernate中,组件映射通常通过XML配置文件或者使用注解来实现。以下是一个使用XML配置的示例: ```xml <hibernate-mapping> <component name="childComponent"> </component> </hibernate-...
10. **<component>**:组合属性映射,将多个属性组合成一个复合类型。 11. ****、****、****、****:集合类型的映射,对应Java中的List、Set和Map,用于处理一对多关系。 12. ****:缓存配置,可以设置二级缓存,...
3. 创建SpringMVC配置文件:定义处理器映射器、视图解析器、拦截器等。 4. 编写Controller:实现请求处理逻辑,使用@RequestMapping注解定义URL映射。 接下来,Spring框架是整个应用程序的基石,它通过DI管理对象的...
3. **配置Hibernate**:在主配置文件(如`applicationContext.xml`)中,配置Hibernate的数据源、SessionFactory和事务管理器。使用`LocalSessionFactoryBean`来创建SessionFactory,并设置数据库连接信息。同时,...
在Hibernate中,DTD(Document Type Definition)和XSD(XML Schema Definition)文件是用于定义XML配置文件的结构和约束的关键元素。下面我们将深入探讨这些文件及其在Hibernate中的作用。 首先,DTD文件是XML文档...
"Hibernate组件映射代码详解" titre的知识点: * Hibernate组件映射代码的概念和实现 * 组件关联映射的属性和...Hibernate组件映射的配置文件是指People.hbm.xml文件,该文件用于描述实体类和组件类之间的映射关系。
03 03Hibernate_Component : 实体细粒度的划分,数据库中的一张表在程序中划分为几个部分的实体,配置文件和增、删、改、查的使用。 04 04Hibernate_Composite : 复合主键的使用,在开发中很少用到,一般良好的设计...
2. **配置Spring**:创建一个Spring配置文件,例如`applicationContext.xml`,启用Annotation配置,使用`<context:component-scan>`元素扫描带有特定注解的类,同时配置数据源和Hibernate SessionFactory。...
在注解配置下,我们不再需要`hibernate.cfg.xml`配置文件,而是使用`@Entity`注解标识实体类,`@Table`定义对应的数据库表,`@Id`标识主键,`@GeneratedValue`处理自增主键等。此外,`@ManyToOne`、`@OneToOne`、`@...
我们将深入探讨这些实体类及其在映射文件中的配置。 首先,`Employer`类代表雇主,通过`<class>`元素映射到`employers`表。`id`属性定义了主键,使用`sequence`生成器生成序列,这在PostgreSQL等支持序列的数据库中...
首先,你需要在SpringMVC的配置文件中添加定时任务的配置,比如使用Spring的TaskExecutor或Scheduler,或者集成Quartz库。然后,定义一个定时任务类,这个类中包含执行定时任务的方法,并且这个方法内部可以使用...
在传统的Hibernate配置中,组件映射通常通过XML配置文件实现。例如: ```xml <hibernate-mapping> <id name="id" column="ID"></id> <component name="child"> </component> <!-- 如果组件类需要独立...
它的核心概念包括实体(Entity)、持久化类(Persistent Class)、配置文件(Hibernate Configuration File)、映射文件(Mapping File)以及会话工厂(SessionFactory)和会话(Session)等。 **2. Hibernate的...