hibernate hibernate.cfg.xml component 组件

1.为什么使用component组件?

当一个表的列数目比较多时,可以根据属性分类,将一个java对象拆分为几个对象。

数据库还是一张表,不过有多个对象与之对应。

2.实例

2.1 Java 对象:

 1 public class Person {
 2
 3     private int id;
 4     private Name name;
 5     private Parents parents;
 6
 7     public Parents getParents() {
 8         return parents;
 9     }
10
11     public void setParents(Parents parents) {
12         this.parents = parents;
13     }
14
15     public int getId() {
16         return id;
17     }
18
19     public void setId(int id) {
20         this.id = id;
21     }
22
23     public Name getName() {
24         return name;
25     }
26
27     public void setName(Name name) {
28         this.name = name;
29     }
30 }
 1 public class Parents {
 2     private Name father;
 3     private Name mother;
 4
 5     public Name getFather() {
 6         return father;
 7     }
 8
 9     public void setFather(Name father) {
10         this.father = father;
11     }
12
13     public Name getMother() {
14         return mother;
15     }
16
17     public void setMother(Name mother) {
18         this.mother = mother;
19     }
20 }
 1 public class Name {
 2     private String bigName;
 3     private String nickName;
 4     private int nameVersion;
 5
 6     public String getBigName() {
 7         return bigName;
 8     }
 9
10     public void setBigName(String bigName) {
11         this.bigName = bigName;
12     }
13
14     public int getNameVersion() {
15         return nameVersion;
16     }
17
18     public void setNameVersion(int nameVersion) {
19         this.nameVersion = nameVersion;
20     }
21
22     public String getNickName() {
23         return nickName;
24     }
25
26     public void setNickName(String nickName) {
27         this.nickName = nickName;
28     }
29 }

2.2 Hibernate 配置文件 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     <session-factory>
 8         <!-- Platform settings -->
 9         <property name="connection.driver_class">com.mysql.jdbc.Driver</property>
10         <property name="connection.url">jdbc:mysql://localhost:3306/test</property>
11         <property name="connection.username">root</property>
12         <property name="connection.password">123456</property>
13         <property name="dialect">org.hibernate.dialect.MySQL5Dialect</property>
14         <!-- Miscellaneous Settings -->
15         <property name="show_sql">true</property>
16         <!--mapping files-->
17         <mapping resource="test/com/hibernate/config/hbm/person.hbm.xml"/>
18     </session-factory>
19
20 </hibernate-configuration>

映射文件person.hbm.xml

 1 <?xml version="1.0" encoding="utf-8"?>
 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 <hibernate-mapping>
 6     <class name="test.com.hibernate.component.Person" table="person" lazy="false">
 7         <id name="id" column="id" type="java.lang.Integer">
 8             <generator class="native"/>
 9         </id>
10         <component name="name" class="test.com.hibernate.component.Name" >
11             <property name="bigName" column="bigName" type="string"/>
12             <property name="nickName" column="nickName" type="string"/>
13             <property name="nameVersion" column="nameVersion" type="integer"/>
14         </component>
15         <component name="parents" class="test.com.hibernate.component.Parents">
16             <component name="father" class="test.com.hibernate.component.Name">
17                 <property name="bigName" column="f_bigName" type="string"/>
18                 <property name="nickName" column="f_nickName" type="string"/>
19                 <property name="nameVersion" column="f_nameVersion" type="integer"/>
20             </component>
21             <component name="mother" class="test.com.hibernate.component.Name">
22                 <property name="bigName" column="m_bigName" type="string"/>
23                 <property name="nickName" column="m_nickName" type="string"/>
24                 <property name="nameVersion" column="m_nameVersion" type="integer"/>
25             </component>
26         </component>
27     </class>
28 </hibernate-mapping>

2.3 Hibernate 操作代码:

HibernateUtil.java

 1 public class HibernateUtil {
 2     static SessionFactory sessionFactory = null;
 3     static{
 4         StandardServiceRegistry registry = new StandardServiceRegistryBuilder()
 5                 .configure("test/com/hibernate/config/hibernate.cfg.xml").build();
 6         MetadataSources sources = new MetadataSources();
 7         Metadata metadata = sources.buildMetadata(registry);
 8         sessionFactory = metadata.buildSessionFactory();
 9     }
10     public static Session openSession(){
11         if(sessionFactory==null){
12             throw new HibernateException("session factory is null!");
13         }
14         return sessionFactory.openSession();
15     }
16     public static void destroy() {
17         if(sessionFactory!=null){
18             sessionFactory.close();
19         }
20     }
21 }

Test.java

 1 public class Test {
 2
 3     public static void main(String[] args) {
 4
 5         Name name = new Name();
 6         name.setBigName("Daughter");
 7         name.setNickName("girl");
 8         name.setNameVersion(1);
 9         Person person = new Person();
10         person.setName(name);
11
12         Name father = new Name();
13         father.setBigName("Father");
14         father.setNickName("man");
15         father.setNameVersion(1);
16         Name mother = new Name();
17         mother.setBigName("Mother");
18         mother.setNickName("woman");
19         mother.setNameVersion(1);
20
21         Parents parents = new Parents();
22         parents.setFather(father);
23         parents.setMother(mother);
24
25         person.setParents(parents);
26
27         PersonDao.save(person);
28     }
29 }

上述例子使用Hibernate版本为5.2Final,配置文件也可以用以前的Configuration配置。

2.4 运行结果

自动创建一个person表,并插入一条数据

时间: 2024-08-14 17:22:14

hibernate hibernate.cfg.xml component 组件的相关文章

Hibernate入门篇&lt;1&gt;hibernate.cfg.xml学习小结

Hibernate配置文件主要用于配置数据库连接和Hibernate运行时所需的各种属性,这个配置文件应该位于应用程序或Web程序的类文件夹 classes中.Hibernate配置文件支持两种形式,一种是xml格式的配置文件,另一种是Java属性文件格式的配置文件,采用"键=值"的形式.建议采用xml格式的配置文件,xml配置文件可以直接对映射文件进行配置,并由Hibernate自动加载,而properties文件则必须在程序中通过编码加载映射文件. 一)hibernate配置文件模

解决离线Could not parse configuration:hibernate.cfg.xml错误

离线使用hibernate tool 生成反向工程,在配置 配置文件完,生成配置文件后,会报出org.hibernate.HibernateException: Could not parse configuration:错误 原因:就是读取不到本地dtd约束,然后必须每次联网加载才行,具体原因不了解,因为网络这方面的解答都比较模糊,应该是小范围问题,感觉是jdk与tools要求版本不一致,导致部分插件未正常安装,解析出现问题 解决方式(同理可解决映射文件出现的解析不成的问题) : 首先确认cf

hibernate.cfg.xml配置文件和hbm.xml配置文件 模板

hibernate.cfg.xml配置文件格式 <?xml version="1.0" encoding="UTF-8"?><!DOCTYPE hibernate-configuration PUBLIC "-//Hibernate/Hibernate Configuration DTD 3.0//EN" "http://hibernate.sourceforge.net/hibernate-configuration

hibernate3配置文件hibernate.cfg.xml的详细解释

<!--标准的XML文件的起始行,version='1.0'表明XML的版本,encoding='gb2312'表明XML文件的编码方式-->                 <?xml version='1.0' encoding='gb2312'?> <!--表明解析本XML文件的DTD文档位置,DTD是Document Type Definition 的缩写,即文档类型的定义,XML解析器使用DTD文档来检查XML文件的合法性.hibernate.sourceforge

Hibernate配置文件——hibernate.cfg.xml

<?xml version="1.0" encoding="UTF-8"?> <!DOCTYPE hibernate-configuration PUBLIC "-//Hibernate/Hibernate Configuration DTD 3.0//EN" "http://hibernate.sourceforge.net/hibernate-configuration-3.0.dtd"> <

java:Hibernate框架(环境搭建,Hibernate.cfg.xml中属性含义,Hibernate常用API对象,HibernteUitl,对象生命周期图,数据对象的三种状态)

1.环境搭建: 三个准备+7个步骤 准备1:新建项目并添加hibernate依赖的jar文件  准备2:在classpath下(src目录下)新建hibernate的配置文件:hibernate.cfg.xml <?xml version="1.0" encoding="UTF-8"?> <!DOCTYPE hibernate-configuration PUBLIC "-//Hibernate/Hibernate Configurati

spring applicationContext.xml和hibernate.cfg.xml设置

applicationContext.xml配置 <?xml version="1.0" encoding="UTF-8"?> <beans xmlns="http://www.springframework.org/schema/beans" xmlns:xsi="http://www.w3.org/2001/XMLSchema-instance" xmlns:context="http://ww

Hibernate框架 主配置文件(Hibernate.cfg.xml) 映射配置 说明

Hibernate.cfg.xml 主配置文件中主要配置:数据库连接信息.其他参数.映射信息! 常用配置查看源码: hibernate-distribution-3.6.0.Final\project\etc\hibernate.properties   <!DOCTYPE hibernate-configuration PUBLIC "-//Hibernate/Hibernate Configuration DTD 3.0//EN" "http://www.hiber

hibernate配置文件hibernate.cfg.xml的详细解释

<!--标准的XML文件的起始行,version='1.0'表明XML的版本,encoding='gb2312'表明XML文件的编码方式--> <?xml version='1.0' encoding='gb2312'?> <!--表明解析本XML文件的DTD文档位置,DTD是Document Type Definition 的缩写,即文档类型的定义,XML解析器使用DTD文档来检查XML文件的合法性.hibernate.sourceforge.net/hibernate-c