Hibernate配置(2)
一、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)相关推荐
- Hibernate配置详解
一.简单介绍 Hibernate是一种对JDBC做了轻量级封装的对象---关系映射工具,所谓轻量级封装,是指Hibernate并没有完全封装JDBC,Java应用即可以通过Hibernate ...
- Spring MVC+Spring +Hibernate配置事务,但是事务不起作用
最近做项目,被一个问题烦恼了很久.使用Spring MVC+Spring +Hibernate开发项目,在使用注解配置事务管理,刚开始发现无论如何数据库都无法更新,但是可以从数据库查询到数据.怀疑是配 ...
- Spring+Hibernate配置多数据源
Spring+Hibernate配置多数据源 转载于:https://www.cnblogs.com/zhujiabin/p/4816453.html
- Hibernate配置属性详解
http://www.360doc.com/content/12/0228/19/1369263_190362729.shtml 表 3.3. Hibernate配置属性 属性名 用途 hibern ...
- Hibernate配置数据源,数据库连接池
来源:http://lihengwei453848.blog.163.com/blog/static/36866173200922262811669/ 连接池概念: 首先,我们还是老套的讲讲 ...
- (转)为Spring集成的Hibernate配置二级缓存
http://blog.csdn.net/yerenyuan_pku/article/details/52896195 前面我们已经集成了Spring4.2.5+Hibernate4.3.11+Str ...
- 解决在Spring整合Hibernate配置tx事务管理器出现错误的问题
解决在Spring整合Hibernate配置tx事务管理器出现错误的问题 参考文章: (1)解决在Spring整合Hibernate配置tx事务管理器出现错误的问题 (2)https://www.cn ...
- Could not parse mapping document from input stream hibernate配置异常
Could not parse mapping document from input stream hibernate配置异常 参考文章: (1)Could not parse mapping do ...
- hibernate配置映射的问题
今日工作内容:用hibernate配置映射关系. 问题: 1.@OneToOne or @ManyToOne on com.wms.model.PosDetail.position reference ...
- hibernate 配置@ManyToOne(cascade=CascadeType.ALL,fetch=FetchType.LAZY) 主导方问题删除问题。
hibernate 配置@ManyToOne(cascade=CascadeType.ALL,fetch=FetchType.LAZY) ?? 多对一的关系 ,关系有一个主导方.主导方应该是one的 ...
最新文章
- opencv中的Rodrigues()函数
- python partition函数_如何使用正确的姿势进行高效Python函数式编程?
- 如何应用AutoML加速图机器学习任务的处理?
- 移动时捕捉不到基点_CAD入门学习攻略:CAD软件中对象捕捉功能使用技巧汇总
- 伦斯勒理工学院计算机科学本科,【择校解读】伦斯勒理工学院(RPI)院校指南...
- 使用RxJava和SseEmitter进行服务器发送的事件
- Scala学习之字符串篇(六):使用正则表达式
- 如何从0到1搭建物联网系统?
- UDK2017下载及编译
- 终极成语接龙,谁能继续往下接,哈哈!!!
- VMware Horizon 8安装部署(八)访问测试,成功部署。
- java全栈开发工程师_谈谈我对Java(J2EE)全栈工程师的理解
- 【NOI OJ】1818 红与黑
- 自动生成条形码软件如何批量打印可变条码
- Java 生成二维码 zxing生成二维码 条形码 服务端生成二维码 Java生成条形码
- F#周报2019年第8期
- CentOS7 DNS配置一条龙全套服务
- Linux 网络命令大全
- 使用PL/Scope分析PL/SQL代码
- #10049. 「一本通 2.3 例 1」Phone List(trie树应用)
热门文章
- Android项目:proguard混淆之常见开源项目混淆配置
- 域控服务器状态检查和标准备份
- [IE技巧] 禁止/允许显示网页上Flash的小插件
- 想进入系统CMD?请输入密码
- iOS 状态栏的图标
- c# 传递Null的string值导致的调用C++的dll报错 Attempted to read or write protected memory.
- 设计模式之创建型模式
- 多ajax请求的各类解决方案(同步, 队列, cancel请求)
- C# 利用SharpPcap实现网络包捕获嗅探
- ASP.NET 5 DNX SDK删除旧版本