一、Hibernate.cfg.xml 主配置(主要包括:数据库连接信息、其他参数、映射信息)

1、常用配置查看源码:

hibernate-distribution-3.6.0.Final\project\etc\hibernate.properties

2、数据库连接参数配置

  2.1数据库方言配置

#hibernate.dialect org.hibernate.dialect.MySQLDialect
#hibernate.dialect org.hibernate.dialect.MySQLInnoDBDialect
#hibernate.dialect org.hibernate.dialect.MySQLMyISAMDialect
#hibernate.connection.driver_class com.mysql.jdbc.Driver
#hibernate.connection.url jdbc:mysql:///test
#hibernate.connection.username gavin
#hibernate.connection.password

  2.2自动建表的配置

#hibernate.hbm2ddl.auto create-drop 每次在创建sessionFactory时候执行创建表;当调用sesisonFactory的close方法的时候,删除表!
#hibernate.hbm2ddl.auto create   每次都重新建表; 如果表已经存在就先删除再创建
#hibernate.hbm2ddl.auto update  如果表不存在就创建; 表存在就不创建;
#hibernate.hbm2ddl.auto validate  (生成环境时候) 执行验证: 当映射文件的内容与数据库表结构不一样的时候就报错!

代码自动建表:

public class App_ddl {// 自动建表
    @Testpublic void testCreate() throws Exception {// 创建配置管理类对象Configuration config = new Configuration();// 加载主配置文件
        config.configure();// 创建工具类对象SchemaExport export = new SchemaExport(config);// 建表// 第一个参数: 是否在控制台打印建表语句// 第二个参数: 是否执行脚本export.create(true, true);}
}

二、Hibernate文档说明(包含所有内容)

    路径:hibernate-distribution-3.6.0.Final\documentation\manual\zh-CN\html_single\index.html

    1、查询主键的生成策略

    2、映射配置

<?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"><!-- 映射文件: 映射一个实体类对象;  描述一个对象最终实现可以直接保存对象数据到数据库中。  -->
<!-- package: 要映射的对象所在的包(可选,如果不指定,此文件所有的类都要指定全路径)auto-import 默认为true, 在写hql的时候自动导入包名如果指定为false, 再写hql的时候必须要写上类的全名;如:session.createQuery("from cn.itcast.c_hbm_config.Employee").list();-->
<hibernate-mapping package="cn.itcast.c_hbm_config" auto-import="true"><!-- class 映射某一个对象的(一般情况,一个对象写一个映射文件,即一个class节点)name 指定要映射的对象的类型table 指定对象对应的表;如果没有指定表名,默认与对象名称一样 --><class name="Employee" table="employee"><!-- 主键 ,映射--><id name="empId" column="id"><!-- 主键的生成策略identity  自增长(mysql,db2)sequence  自增长(序列), oracle中自增长是以序列方法实现native  自增长【会根据底层数据库自增长的方式选择identity或sequence】如果是mysql数据库, 采用的自增长方式是identity如果是oracle数据库, 使用sequence序列的方式实现自增长increment  自增长(会有并发访问的问题,一般在服务器集群环境使用会存在问题。)assigned  指定主键生成策略为手动指定主键的值uuid      指定uuid随机生成的唯一的值foreign   (外键的方式, one-to-one讲)--><generator class="uuid"/></id><!-- 普通字段映射propertyname  指定对象的属性名称column 指定对象属性对应的表的字段名称,如果不写默认与对象属性一致。length 指定字符的长度, 默认为255type   指定映射表的字段的类型,如果不指定会匹配属性的类型java类型:     必须写全名hibernate类型:  直接写类型,都是小写--><property name="empName" column="empName" type="java.lang.String" length="20"></property><property name="workDate" type="java.util.Date"></property><!-- 如果列名称为数据库关键字,需要用反引号或改列名。 --><property name="desc" column="`desc`" type="java.lang.String"></property></class></hibernate-mapping>

  3、复合主键映射(多字段作为主键)

  3.1主键封装为类

// 复合主键类
public class CompositeKeys implements Serializable{private String userName;private String address;// .. get/set
}

  3.2此类引用主键类

public class User {// 名字跟地址,不会重复private CompositeKeys keys;private int age;
}

  3.3  User.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.d_compositeKey" auto-import="true"><class name="User"><!-- 复合主键映射 --><composite-id name="keys"><key-property name="userName" type="string"></key-property><key-property name="address" type="string"></key-property></composite-id><property name="age" type="int"></property>        </class></hibernate-mapping>

  3.4测试代码App.java

public class App2 {private static SessionFactory sf;static  {        // 创建sf对象sf = new Configuration().configure().addClass(User.class)  //(测试) 会自动加载映射文件:Employee.hbm.xml
            .buildSessionFactory();}//1. 保存对象
    @Testpublic void testSave() throws Exception {Session session = sf.openSession();Transaction tx = session.beginTransaction();// 对象CompositeKeys keys = new CompositeKeys();keys.setAddress("广州棠东");keys.setUserName("Jack");User user = new User();user.setAge(20);user.setKeys(keys);// 保存
        session.save(user);tx.commit();session.close();}@Testpublic void testGet() throws Exception {Session session = sf.openSession();Transaction tx = session.beginTransaction();//构建主键再查询CompositeKeys keys = new CompositeKeys();keys.setAddress("广州棠东");keys.setUserName("Jack");// 主键查询User user = (User) session.get(User.class, keys);// 测试输出if (user != null){System.out.println(user.getKeys().getUserName());System.out.println(user.getKeys().getAddress());System.out.println(user.getAge());}tx.commit();session.close();}
}

转载于:https://www.cnblogs.com/h-g-f-s123/p/6380209.html

Hibernate配置(2)相关推荐

  1. Hibernate配置详解

     一.简单介绍   Hibernate是一种对JDBC做了轻量级封装的对象---关系映射工具,所谓轻量级封装,是指Hibernate并没有完全封装JDBC,Java应用即可以通过Hibernate ...

  2. Spring MVC+Spring +Hibernate配置事务,但是事务不起作用

    最近做项目,被一个问题烦恼了很久.使用Spring MVC+Spring +Hibernate开发项目,在使用注解配置事务管理,刚开始发现无论如何数据库都无法更新,但是可以从数据库查询到数据.怀疑是配 ...

  3. Spring+Hibernate配置多数据源

    Spring+Hibernate配置多数据源 转载于:https://www.cnblogs.com/zhujiabin/p/4816453.html

  4. Hibernate配置属性详解

    http://www.360doc.com/content/12/0228/19/1369263_190362729.shtml 表 3.3.  Hibernate配置属性 属性名 用途 hibern ...

  5. Hibernate配置数据源,数据库连接池

    来源:http://lihengwei453848.blog.163.com/blog/static/36866173200922262811669/ 连接池概念:      首先,我们还是老套的讲讲 ...

  6. (转)为Spring集成的Hibernate配置二级缓存

    http://blog.csdn.net/yerenyuan_pku/article/details/52896195 前面我们已经集成了Spring4.2.5+Hibernate4.3.11+Str ...

  7. 解决在Spring整合Hibernate配置tx事务管理器出现错误的问题

    解决在Spring整合Hibernate配置tx事务管理器出现错误的问题 参考文章: (1)解决在Spring整合Hibernate配置tx事务管理器出现错误的问题 (2)https://www.cn ...

  8. Could not parse mapping document from input stream hibernate配置异常

    Could not parse mapping document from input stream hibernate配置异常 参考文章: (1)Could not parse mapping do ...

  9. hibernate配置映射的问题

    今日工作内容:用hibernate配置映射关系. 问题: 1.@OneToOne or @ManyToOne on com.wms.model.PosDetail.position reference ...

  10. hibernate 配置@ManyToOne(cascade=CascadeType.ALL,fetch=FetchType.LAZY) 主导方问题删除问题。

    hibernate 配置@ManyToOne(cascade=CascadeType.ALL,fetch=FetchType.LAZY)  ?? 多对一的关系 ,关系有一个主导方.主导方应该是one的 ...

最新文章

  1. opencv中的Rodrigues()函数
  2. python partition函数_如何使用正确的姿势进行高效Python函数式编程?
  3. 如何应用AutoML加速图机器学习任务的处理?
  4. 移动时捕捉不到基点_CAD入门学习攻略:CAD软件中对象捕捉功能使用技巧汇总
  5. 伦斯勒理工学院计算机科学本科,【择校解读】伦斯勒理工学院(RPI)院校指南...
  6. 使用RxJava和SseEmitter进行服务器发送的事件
  7. Scala学习之字符串篇(六):使用正则表达式
  8. 如何从0到1搭建物联网系统?
  9. UDK2017下载及编译
  10. 终极成语接龙,谁能继续往下接,哈哈!!!
  11. VMware Horizon 8安装部署(八)访问测试,成功部署。
  12. java全栈开发工程师_谈谈我对Java(J2EE)全栈工程师的理解
  13. 【NOI OJ】1818 红与黑
  14. 自动生成条形码软件如何批量打印可变条码
  15. Java 生成二维码 zxing生成二维码 条形码 服务端生成二维码 Java生成条形码
  16. F#周报2019年第8期
  17. CentOS7 DNS配置一条龙全套服务
  18. Linux 网络命令大全
  19. 使用PL/Scope分析PL/SQL代码
  20. #10049. 「一本通 2.3 例 1」Phone List(trie树应用)

热门文章

  1. Android项目:proguard混淆之常见开源项目混淆配置
  2. 域控服务器状态检查和标准备份
  3. [IE技巧] 禁止/允许显示网页上Flash的小插件
  4. 想进入系统CMD?请输入密码
  5. iOS 状态栏的图标
  6. c# 传递Null的string值导致的调用C++的dll报错 Attempted to read or write protected memory.
  7. 设计模式之创建型模式
  8. 多ajax请求的各类解决方案(同步, 队列, cancel请求)
  9. C# 利用SharpPcap实现网络包捕获嗅探
  10. ASP.NET 5 DNX SDK删除旧版本