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主配置文件、映射配置文件以及复合主键查询的更多相关文章

  1. Hibernate第三篇【主配置文件、映射文件、复合主键映射】

    前言 目前已经学了如何搭建Hibernate的开发环境,以及Hibernate对应的API了-在快速入门还没讲解的就是配置文件是怎么配置的.因此,本博文主要讲解主配置文件以及映射配置文件.. 主配置文 ...

  2. Hibernate征途(七)之复合主键映射和集合映射

    把这两种映射放到一起说,是因为这两种映射不像前面的复用型映射.数量和方向型映射那么分类鲜明,所以放到了这个“其他”里面. 复合主键映射 在关系模型中,复合主键和其他的主键方式没有很大区别,但是反映到对 ...

  3. 【hibernate/JPA】注解方式实现 复合主键【spring boot】

    1>hibernate/JPA实现复合主键的思路:是将所有的主键属性封装在一个主键类中,提供给需要复合主键的实体类使用. 2>主键类的几点要求: . 使用复合主键的实体类必须实现Seria ...

  4. Hibernate学习笔记--映射配置文件详解

    参考资料: http://blog.163.com/hzd_love/blog/static/13199988120108265317988/ http://www.cnblogs.com/often ...

  5. Hibernate复合主键映射

    目录: 1. 实现方式一:将复合主键对应的属性与实体其他普通属性放在一起 2. 实现方式二:将主键属性提取到一个主键类中,实体类只需包含主键类的一个引用 在日常开发中会遇到这样一种情况,数据库中的某张 ...

  6. hibernate复合主键

    需要用到实体类Role的主键和Menu的主键结合起来作为实体类RoleMenu的主键,那么通过Hibernate具体实现如下: RoleMenu实体类:(注意该实体类需要实现Serializable接 ...

  7. Hibernate框架 主配置文件 Hibernate.cfg.xml 映射配置 说明

    1 主配置文件 Hibernate.cfg.xml 主配置文件中主要配置:数据库连接信息.其他参数.映射信息! 常用配置查看源码: hibernate-distribution-3.6.0.Final ...

  8. 【Hibernate步步为营】--复合主键映射具体解释

    上篇文章讨论了继承映射,它是对象模型中最主要的特性,对于继承映射它的主要区分是字段类型的不同,所以在生成表结构时须要有新列来标识数据的类型,能够使用<subclass>标签并在标签中加入d ...

  9. Hibernate 表映射 主键生成策略与复合主键

    主要分析三点: 一.数据表和Java类的映射 : 二.单一主键映射和主键的生成策略 : 三.复合主键的表映射 : 一.数据表和Java类的映射  Hibernate封装了数据库DDL语句,只需要将数据 ...

随机推荐

  1. Android多点触控手势基础

    处理多点触控手势 多点触控就是同时把一根以上的手指放在屏幕上. 再继续往下以前需要补充一些名词: 触控手势:就是把一根或者几根手指放在屏幕上做各种动作,其中包括保留一根手指的前提下,拿起或者放下其余的 ...

  2. linux ping命令

    Linux系统的ping命令是常用的网络命令,它通常用来测试与目标主机的连通性,我们经常会说“ping一下某机器,看是不是开着”.不能打开网页时会说“你先ping网关地址192.168.1.1试试”. ...

  3. 《如何阅读it技术书》课堂笔记——51cto

    对一些书的看法: “21天精通JAVA之类”的书,好好理解精通二字,哪里有这么快就能学的会. 吐槽新人: Oop理论,别写出来的都是面向过程式. 桌面乱七八糟. 对新人分享一些经验: 阅读时自我提神的 ...

  4. MCU_数码管常用表

    共阴极数码管编码(0---F) unsigned char code table[]={ 0x3f,0x06,0x5d,0x4f, 0x66,0x6d,0x77,0x7c, 0x39,0x5e,0x7 ...

  5. 1*1卷积核在GoogleLeNet中的作用

    1. 实现跨通道的交互和信息整合 1×1的卷积层(可能)引起人们的重视是在NIN的结构中,论文中林敏师兄的想法是利用MLP代替传统的线性卷积核,从而提高网络的表达能力.文中同时利用了跨通道poolin ...

  6. ASP.NET中实现回调

    一.引言 在ASp.NET网页的默认模型中,用户通过单击按钮或其他操作的方式来提交页面,此时客户端将当前页面表单中的所有数据(包括一些自动生成的隐藏域)都提交到服务器端,服务器将重新实例化一个当前页面 ...

  7. Abp添加菜单

    Abp添加菜单 在abp模板中添加菜单,EntityFramework+Angular.js模板,使用的Abp版本为3.8.1. 创建Abp项目模板,例如名称叫做LawAndRegulation. 服 ...

  8. C# 简单反射实现winform左侧树形导航,右侧切换内容

    先看看效果: 核心代码: using System; using System.Collections.Generic; using System.ComponentModel; using Syst ...

  9. dev gridview自动列宽和单元、行、checkbox选中和多选

    #region 自动列宽 for (int I = 0; I < gridView1.Columns.Count; I++) { this.gridView1.BestFitColumns(); ...

  10. PS插件CameraRaw-初次尝试

    一.百度百科原话 RAW的原意就是“未经加工”.可以理解为:RAW图像就是CMOS或者CCD图像感应器将捕捉到的光源信号转化为数字信号的原始数据.RAW文件是一种记录了数码相机传感器的原始信息,同时记 ...