zoukankan      html  css  js  c++  java
  • 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表,并插入一条数据

  • 相关阅读:
    LeetCode 230. Kth Smallest Element in a BST
    LeetCode 114. Flatten Binary Tree to Linked List
    LeetCode 222. Count Complete Tree Nodes
    LeetCode 129. Sum Root to Leaf Numbers
    LeetCode 113. Path Sum II
    LeetCode 257. Binary Tree Paths
    Java Convert String & Int
    Java Annotations
    LeetCode 236. Lowest Common Ancestor of a Binary Tree
    LeetCode 235. Lowest Common Ancestor of a Binary Search Tree
  • 原文地址:https://www.cnblogs.com/selfchange/p/5631158.html
Copyright © 2011-2022 走看看