Hibernate主配置文件、映射配置文件以及复合主键查询
Hibernate.cfg.xml主配置文件
主配置文件中主要配置:数据库连接信息、其他参数、映射信息!
常用配置查看源码:
hibernate-distribution-3.6.0.Final\project\etc\hibernate.properties(键值对的形式展现)
如:
..... ## Microsoft Driver (not recommended!) #hibernate.connection.driver_class com.microsoft.jdbc.sqlserver.SQLServerDriver #hibernate.connection.url jdbc:microsoft:sqlserver://1E1;DatabaseName=test;SelectMethod=cursor ## The New Microsoft Driver #hibernate.connection.driver_class com.microsoft.sqlserver.jdbc.SQLServerDriver #hibernate.connection.url jdbc:sqlserver://localhost ........
自动建表
#hibernate.hbm2ddl.auto create-drop 每次在创建sessionFactory时候执行创建表; 当调用sesisonFactory的close方法的时候,删除表!
#hibernate.hbm2ddl.auto create 每次都重新建表; 如果表已经存在就先删除再创建
#hibernate.hbm2ddl.auto update 如果表不存在就创建; 表存在就不创建;
#hibernate.hbm2ddl.auto validate (生成环境时候) 执行验证: 当映射文件的内容与数据库表结构不一样的时候就报错!
<!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> <!-- 数据库连接配置 --> <property name="hibernate.connection.driver_class">com.microsoft.sqlserver.jdbc.SQLServerDriver</property> <property name="hibernate.connection.url">jdbc:sqlserver://localhost:1433;DataBaseName=Test</property> <property name="hibernate.connection.username">sa</property> <property name="hibernate.connection.password">123456</property> <!-- 生成指定的sql语言 --> <property name="hibernate.dialect">org.hibernate.dialect.SQLServerDialect</property> <!-- 为了更好的展示效果,在控制台打印sql语句 --> <property name="hibernate.show_sql">true</property> <!-- 格式化sql语句 --> <property name="hibernate.format_sql">true</property> <!-- 自动创建表 --> <property name="hibernate.hbm2ddl.auto">update</property> <!-- 加载所有映射 <mapping resource="com/gqx/api/User.hbm.xml"/> --> <mapping resource="com/gqx/demo1/User.hbm.xml"/> </session-factory> </hibernate-configuration>
映射配置文件
<?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:要映射的对象所在的包(可选,若不指定,则文件的类都要指定全路径 --> <hibernate-mapping package="com.gqx.api"> <!-- class:映射的某一个对象(一般情况,一个对象写一个映射文件,寄一个class节点 name:指定要映射的对象的类型 table:对象对应的表(如果没有指定,默认和对象名一样) --> <class name="User" table="users2"> <!-- 主键字段 --> <id name="id" column="uid"> <!-- 主键的生成策略 native :自增长(功能强大,根据数据库自动选择identity或sequence increment:自增长(会有并发访问的问题,一般在服务器集群环境使用会存在问题) assigned:指定主键生成策略为手动指定主键的值 uuid:指定UUID随机生成的唯一的值 --> <generator class="native"/> </id> <!-- 非主键 如果列明为数据库的关键字,需要用反引号或改列名 name:指定对象的属性名称 column:指定对象属性对应的表的字段名称 length:指定字符串的长度,默认255 type:指定映射表的字段类型,如果不指定会匹配属性的类型 --> <property name="name" column="name" type="java.lang.String" length="40"></property> <property name="password" column="password"></property> </class> </hibernate-mapping>
复合主键映射
1、创建一个复合主键类
package com.gqx.demo2;
import java.io.Serializable;
//复合主键类
public class CompositeKeys implements Serializable {
private static final long serialVersionUID = 1L;
private String name;
private String address;
public String getName() {
return name;
}
public void setName(String name) {
this.name = name;
}
public String getAddress() {
return address;
}
public void setAddress(String address) {
this.address = address;
}
}
2、创建完整类对象
package com.gqx.demo2;
public class Employee {
//名字和地址不能重复
private CompositeKeys keys;
private int age;
public CompositeKeys getKeys() {
return keys;
}
public void setKeys(CompositeKeys keys) {
this.keys = keys;
}
public int getAge() {
return age;
}
public void setAge(int age) {
this.age = age;
}
}
写映射配置文件
<?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="com.gqx.demo2"> <class name="Employee" > <!-- 符合主键映射 --> <composite-id name="keys"> <key-property name="name" type="string"></key-property> <key-property name="address" type="string"></key-property> </composite-id> <property name="age" type="int"></property> </class> </hibernate-mapping>
最后则是测试类
package com.gqx.demo2;
import org.hibernate.Session;
import org.hibernate.SessionFactory;
import org.hibernate.Transaction;
import org.hibernate.cfg.Configuration;
import org.junit.Test;
public class test {
private static SessionFactory sf;
static{
sf=new Configuration()
.configure().addClass(Employee.class)
.buildSessionFactory();
}
@Test
public void test() {
Session session=sf.openSession();
Transaction transaction=session.beginTransaction();
CompositeKeys keys=new CompositeKeys();
keys.setName("test");
keys.setAddress("湖北黄石");
Employee employee=new Employee();
employee.setAge(21);
employee.setKeys(keys);
session.save(employee);
transaction.commit();
session.close();
sf.close();
}
}
你就会看到数据库会新增一条记录。
js:伸缩文字,如下图效果:

<!DOCTYPE html>
<html>
<head>
<meta charset="utf-8">
<meta http-equiv="X-UA-Compatible" content="IE=edge">
<title>收缩文字</title>
<style type="text/css" media="screen">
#div1 {
width: 200px;
min-height: 20px;
border: 1px #000 solid;
}
</style>
</head>
<body>
<input type="button" value="展开">
<input type="button" value="收缩">
<div id="div1"></div>
<script type="text/javascript">
var aInput = document.getElementsByTagName('input');
var oDiv = document.getElementById('div1');
var str = 'Enjoy your youth. You’ll never be younger than you are at this very moment. 尽情享受你的青春,你永远不会比此刻更年轻了。';
var timer = null;
var arr = str.split('');
aInput[0].onclick = function() {
clearInterval(timer);
timer = setInterval(function() {
//shift() 方法用于把数组的第一个元素从其中删除,并返回第一个元素的值。
var val = arr.shift();
oDiv.innerHTML += val;
if (arr.length == 0) {
clearInterval(timer);
}
}, 50)
}
aInput[1].onclick = function() {
var arr2 = oDiv.innerHTML.split('');
clearInterval(timer);
timer = setInterval(function() {
//unshift() 方法可向数组的开头添加一个或更多元素,并返回新的长度。
arr.unshift(arr2.pop());
//join() 方法用于把数组中的所有元素放入一个字符串。
oDiv.innerHTML=arr2.join('');
if (arr2.length==0) {
clearInterval(timer);
}
},50);
}
</script>
</body>
</html>
Hibernate主配置文件、映射配置文件以及复合主键查询的更多相关文章
- Hibernate第三篇【主配置文件、映射文件、复合主键映射】
前言 目前已经学了如何搭建Hibernate的开发环境,以及Hibernate对应的API了-在快速入门还没讲解的就是配置文件是怎么配置的.因此,本博文主要讲解主配置文件以及映射配置文件.. 主配置文 ...
- Hibernate征途(七)之复合主键映射和集合映射
把这两种映射放到一起说,是因为这两种映射不像前面的复用型映射.数量和方向型映射那么分类鲜明,所以放到了这个“其他”里面. 复合主键映射 在关系模型中,复合主键和其他的主键方式没有很大区别,但是反映到对 ...
- 【hibernate/JPA】注解方式实现 复合主键【spring boot】
1>hibernate/JPA实现复合主键的思路:是将所有的主键属性封装在一个主键类中,提供给需要复合主键的实体类使用. 2>主键类的几点要求: . 使用复合主键的实体类必须实现Seria ...
- Hibernate学习笔记--映射配置文件详解
参考资料: http://blog.163.com/hzd_love/blog/static/13199988120108265317988/ http://www.cnblogs.com/often ...
- Hibernate复合主键映射
目录: 1. 实现方式一:将复合主键对应的属性与实体其他普通属性放在一起 2. 实现方式二:将主键属性提取到一个主键类中,实体类只需包含主键类的一个引用 在日常开发中会遇到这样一种情况,数据库中的某张 ...
- hibernate复合主键
需要用到实体类Role的主键和Menu的主键结合起来作为实体类RoleMenu的主键,那么通过Hibernate具体实现如下: RoleMenu实体类:(注意该实体类需要实现Serializable接 ...
- Hibernate框架 主配置文件 Hibernate.cfg.xml 映射配置 说明
1 主配置文件 Hibernate.cfg.xml 主配置文件中主要配置:数据库连接信息.其他参数.映射信息! 常用配置查看源码: hibernate-distribution-3.6.0.Final ...
- 【Hibernate步步为营】--复合主键映射具体解释
上篇文章讨论了继承映射,它是对象模型中最主要的特性,对于继承映射它的主要区分是字段类型的不同,所以在生成表结构时须要有新列来标识数据的类型,能够使用<subclass>标签并在标签中加入d ...
- Hibernate 表映射 主键生成策略与复合主键
主要分析三点: 一.数据表和Java类的映射 : 二.单一主键映射和主键的生成策略 : 三.复合主键的表映射 : 一.数据表和Java类的映射 Hibernate封装了数据库DDL语句,只需要将数据 ...
随机推荐
- VHDL基础2
Signals & Variables VHDL 提供了 signal 和 variable 两种对象来处理非静态数据:提供了 constant 和 generic 来处理静态数据. cons ...
- concurrent.future
concurrent.future module provides a high-level interface for asynchronously executing callables. Bas ...
- java基础-day18
第07天 集合 今日内容介绍 u HashSet集合 u HashMap集合 第1章 HashSet集合 1.1 Set接口的特点 Set体系的集合: A:存入集合的顺序和取出集合的顺序不一 ...
- Java关联关系、依赖关系
关联关系 概念:对象和对象之间的连接 定义:A类关联B类,指的是B类对象作为A类的属性存在,称为“has”关联关系 生命周期:如果A类关联B类,那么创建A类的对象时实例化B类的对象,直到A类对象被销毁 ...
- vcpkg-微软开发的VC++打包工具
vcpkg-VC++打包工具 1. 介绍 VCPKG,是VC++ Packaging Tool. 是微软 C++ 团队开发的在 Windows 上运行的 C/C++ 项目包管理工具,可以帮助您在 Wi ...
- hdu 4923 单调栈
http://acm.hdu.edu.cn/showproblem.php?pid=4923 给定一个序列a,元素由0,1组成,求一个序列b,元素在0~1之间,并且保证递增.输出最小的∑(ai−bi) ...
- 微信内置浏览器私有接口WeixinJSBridge介绍
原文地址:http://www.3lian.com/edu/2015/05-25/216227.html 这篇文章主要介绍了微信内置浏览器私有接口WeixinJSBridge介绍,本文讲解了发送给好友 ...
- python使用httplib2访问REST服务的例子
首先你需要安装httplib2,这个可以在github上找到: 然后你需要获得一个http连接的对象: con = httplib2.Http() 然后你需要发起连接: (6)resp, (5)c ...
- 简谈Entity Framework的优缺点
Entity Framework简介 Entity Framework的全称为 ADO.NET Entity Framework ,简称为EF, 是微软以ADO.NET为基础发展出来的实体框架,早期被 ...
- Android-----application的学习
一.Application的对象回调函数 1.onCreate : Application对象被创建时候会调用 2.onConfigurationChanged : 屏幕方向变化.系统语言的更改等 3 ...