hibernate hibernate.cfg.xml component 组件
1.为什么使用component组件?
当一个表的列数目比较多时,可以根据属性分类,将一个java对象拆分为几个对象。
数据库还是一张表,不过有多个对象与之对应。
2.实例
2.1 Java 对象:
- public class Person {
- private int id;
- private Name name;
- private Parents parents;
- public Parents getParents() {
- return parents;
- }
- public void setParents(Parents parents) {
- this.parents = parents;
- }
- public int getId() {
- return id;
- }
- public void setId(int id) {
- this.id = id;
- }
- public Name getName() {
- return name;
- }
- public void setName(Name name) {
- this.name = name;
- }
- }
- public class Parents {
- private Name father;
- private Name mother;
- public Name getFather() {
- return father;
- }
- public void setFather(Name father) {
- this.father = father;
- }
- public Name getMother() {
- return mother;
- }
- public void setMother(Name mother) {
- this.mother = mother;
- }
- }
- public class Name {
- private String bigName;
- private String nickName;
- private int nameVersion;
- public String getBigName() {
- return bigName;
- }
- public void setBigName(String bigName) {
- this.bigName = bigName;
- }
- public int getNameVersion() {
- return nameVersion;
- }
- public void setNameVersion(int nameVersion) {
- this.nameVersion = nameVersion;
- }
- public String getNickName() {
- return nickName;
- }
- public void setNickName(String nickName) {
- this.nickName = nickName;
- }
- }
2.2 Hibernate 配置文件 hibernate.cfg.xml
- <?xml version="1.0" encoding="utf-8" ?>
- <!DOCTYPE hibernate-configuration PUBLIC
- "-//Hibernate/Hibernate Configuration DTD 3.0//EN"
- "http://www.hibernate.org/dtd/hibernate-configuration-3.0.dtd"
- >
- <hibernate-configuration>
- <session-factory>
- <!-- Platform settings -->
- <property name="connection.driver_class">com.mysql.jdbc.Driver</property>
- <property name="connection.url">jdbc:mysql://localhost:3306/test</property>
- <property name="connection.username">root</property>
- <property name="connection.password">123456</property>
- <property name="dialect">org.hibernate.dialect.MySQL5Dialect</property>
- <!-- Miscellaneous Settings -->
- <property name="show_sql">true</property>
- <!--mapping files-->
- <mapping resource="test/com/hibernate/config/hbm/person.hbm.xml"/>
- </session-factory>
- </hibernate-configuration>
映射文件person.hbm.xml
- <?xml version="1.0" encoding="utf-8"?>
- <!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="test.com.hibernate.component.Person" table="person" lazy="false">
- <id name="id" column="id" type="java.lang.Integer">
- <generator class="native"/>
- </id>
- <component name="name" class="test.com.hibernate.component.Name" >
- <property name="bigName" column="bigName" type="string"/>
- <property name="nickName" column="nickName" type="string"/>
- <property name="nameVersion" column="nameVersion" type="integer"/>
- </component>
- <component name="parents" class="test.com.hibernate.component.Parents">
- <component name="father" class="test.com.hibernate.component.Name">
- <property name="bigName" column="f_bigName" type="string"/>
- <property name="nickName" column="f_nickName" type="string"/>
- <property name="nameVersion" column="f_nameVersion" type="integer"/>
- </component>
- <component name="mother" class="test.com.hibernate.component.Name">
- <property name="bigName" column="m_bigName" type="string"/>
- <property name="nickName" column="m_nickName" type="string"/>
- <property name="nameVersion" column="m_nameVersion" type="integer"/>
- </component>
- </component>
- </class>
- </hibernate-mapping>
2.3 Hibernate 操作代码:
HibernateUtil.java
- public class HibernateUtil {
- static SessionFactory sessionFactory = null;
- static{
- StandardServiceRegistry registry = new StandardServiceRegistryBuilder()
- .configure("test/com/hibernate/config/hibernate.cfg.xml").build();
- MetadataSources sources = new MetadataSources();
- Metadata metadata = sources.buildMetadata(registry);
- sessionFactory = metadata.buildSessionFactory();
- }
- public static Session openSession(){
- if(sessionFactory==null){
- throw new HibernateException("session factory is null!");
- }
- return sessionFactory.openSession();
- }
- public static void destroy() {
- if(sessionFactory!=null){
- sessionFactory.close();
- }
- }
- }
Test.java
- public class Test {
- public static void main(String[] args) {
- Name name = new Name();
- name.setBigName("Daughter");
- name.setNickName("girl");
- name.setNameVersion(1);
- Person person = new Person();
- person.setName(name);
- Name father = new Name();
- father.setBigName("Father");
- father.setNickName("man");
- father.setNameVersion(1);
- Name mother = new Name();
- mother.setBigName("Mother");
- mother.setNickName("woman");
- mother.setNameVersion(1);
- Parents parents = new Parents();
- parents.setFather(father);
- parents.setMother(mother);
- person.setParents(parents);
- PersonDao.save(person);
- }
- }
上述例子使用Hibernate版本为5.2Final,配置文件也可以用以前的Configuration配置。
2.4 运行结果
自动创建一个person表,并插入一条数据
hibernate hibernate.cfg.xml component 组件的更多相关文章
- hibernate配置文件hibernate.cfg.xml和.hbm.xml的详细解释
原文地址:http://blog.csdn.net/qiaqia609/article/details/9456489 hibernate.cfg.xml -标准的XML文件的起始行,version= ...
- hibernate.cfg.xml 配置(摘录)
配置文件中映射元素详解 对象关系的映射是用一个XML文档来说明的.映射文档可以使用工具来生成,如XDoclet,Middlegen和AndroMDA等.下面从一个映射的例子开始讲解映射元素,映射文件的 ...
- 转: hibernate配置文件hibernate.cfg.xml和.hbm.xml的详细解释
http://blog.csdn.net/yuhui123999/article/details/51886531 hibernate.cfg.xml -标准的XML文件的起始行,version='1 ...
- Hibernate入门篇<1>hibernate.cfg.xml学习小结
Hibernate配置文件主要用于配置数据库连接和Hibernate运行时所需的各种属性,这个配置文件应该位于应用程序或Web程序的类文件夹 classes中.Hibernate配置文件支持两种形式, ...
- spring applicationContext.xml和hibernate.cfg.xml设置
applicationContext.xml配置 <?xml version="1.0" encoding="UTF-8"?> <beans ...
- hibernate.cfg.xml常见配置
转载自:http://blog.csdn.net/qiaqia609/article/details/9456489 <!--标准的XML文件的起始行,version='1.0'表明XML的版本 ...
- hibernate配置文件hibernate.cfg.xml的详细解释
<!--标准的XML文件的起始行,version='1.0'表明XML的版本,encoding='gb2312'表明XML文件的编码方式--> <?x ...
- hibernate.cfg.xml配置文件和hbm.xml配置文件
http://blog.sina.com.cn/s/blog_a7b8ab2801014m0e.html hibernate.cfg.xml配置文件格式 <?xml version=" ...
- 问题Initial SessionFactory creation failed.org.hibernate.HibernateException: /hibernate.cfg.xml not found解决方法
问题Initial SessionFactory creation failed.org.hibernate.HibernateException: /hibernate.cfg.xml not fo ...
随机推荐
- cocos2d-x-3.11.1 初使用
1. 引擎子系统包括: 世界编辑器.渲染系统.人机交互系统.动画系统.音频系统.物理引擎.网络接口 等 2. cocos2d-x 特点:开源的.跨平台的. cocos2d-x的发展过程: cocos2 ...
- 【C++】int、const char*、char*、char、string之间的转换
#include "stdafx.h" #include<string> #include<vector> #include<iostream> ...
- c#:浅克隆和深克隆,序列化和反序列化
一.浅克隆和深克隆(浅复制和深复制)浅克隆和深克隆最典型的应用是数据集对象DataSet的Clone和Copy方法.Clone()方法用来复制DataSet的结构,但是不复制DataSet的数据,实现 ...
- (地址)eclipse插件开发攻略的访问地址
园子地址: http://www.cnblogs.com/liuzhuo/category/257208.html 关键字: Eclipse插件开发彻底攻略 eclipse插件开发基础篇之
- ios每日一发--Leanclude数据云存储以及登录 注册账户
利用LeanCloud来实现注册账号,存储账号以及,登录时查询账号是否正确.集成方式很简单可以看这里的官方文档.地址是这里: https://leancloud.cn/docs/ 在这里创建应用,以及 ...
- Web前端开发规范文档
Web前端开发规范文档 规范目的: 使开发流程更加规范化. 通用规范: TAB键用两个空格代替(windos下tab键占四个空格,linux下TAB键占八个空格). CSS样式属性或者JAVASCRI ...
- mongodb的一些基本操作
1.列出所有数据库 >show dbs 2.使用数据库 >use memo 3.列出当前数据库的collections >show collections 4.显示当前正 ...
- zjuoj 3601 Unrequited Love
http://acm.zju.edu.cn/onlinejudge/showProblem.do?problemCode=3601 Unrequited Love Time Limit: 16 Sec ...
- SpringMvc自定义拦截器
SpringMvc也可以使用拦截器对请求进行拦截处理,用户可以自定义拦截器来实现特定的功能,自定义拦截器必须实现HandlerInterceptor接口 -preHandle():这个方法在业务处理器 ...
- Sie sind das Essen und wir sind die Jaeger!
WCF http://www.cnblogs.com/iamlilinfeng/archive/2012/09/25/2700049.html HTTP 数据库分库分表 读写分离 负载均衡 wind ...