Hibernate的初次使用
使用hibernate的四个步骤:
第一:创建一个hibernate.cfg.xml。
<!DOCTYPE hibernate-configuration PUBLIC
"-//Hibernate/Hibernate Configuration DTD 3.0//EN"
"http://hibernate.sourceforge.net/hibernate-configuration-3.0.dtd">
<!--声明Hibernate配置文件的开始-->
<hibernate-configuration>
<session-factory>
<!--配置链接数据库的基本属性-->
<property name="connection.url">jdbc:sqlserver://localhost:1433;DatabaseName=Book</property>
<property name="connection.username">sa</property>
<property name="connection.password">123456</property>
<property name="connection.driver_class">com.microsoft.sqlserver.jdbc.SQLServerDriver</property> <!--输出sql语句-->
<property name="show_sql">true</property> <!--数据库使用的sql方言-->
<property name="dialect">org.hibernate.dialect.SQLServerDialect</property> <!--是否格式化sql语句-->
<property name="format_sql">true</property> <!--指定自动生成数据表的策略-->
<!--<property name="hbm2ddl.auto">update</property>--> <!--指定需要关联的映射文件-->//注意在最后要加上这个关联的文件,*.hbm.xml文件。
<mapping resource="NewSpringDAO/Book2.hbm.xml"></mapping>
</session-factory>
</hibernate-configuration> 第二:写一个持久化类
1:必须有一个无参的构造器。
2:非final类
3:set,get方法。
public class Book2 { private int id;
private String name;
private double price;
private String author;
private int bookCount; public Book2(){} public Book2(int id,String name,double price,String author,int bookCount){
this.id=id;
this.name=name;
this.price=price;
this.author=author;
this.bookCount=bookCount;
} public void setId(int id){this.id=id;}
public void setName(String name){this.name=name;}
public void setPrice(double price){this.price=price;}
public void setAuthor(String author){this.author=author;}
public void setBookCount(int bookCount){this.bookCount=bookCount;} public int getId(){return id;}
public String getName(){return name;}
public double getPrice(){return price;}
public String getAuthor(){return author;}
public int getBookCount(){return bookCount;} @Override
public String toString() {
return " "+this.id+" "+this.name+" "+this.price+" "+this.author+" "+this.bookCount;
}
} 第三:在类路径下创建对应的*.hbm.xml
<?xml version="1.0" encoding='UTF-8'?>
<!DOCTYPE hibernate-mapping PUBLIC
"-//Hibernate/Hibernate Mapping DTD//EN"
"http://hibernate.sourceforge.net/hibernate-mapping-3.0.dtd">
<hibernate-mapping>
<class name="NewSpringDAO.Book2" table="Bookimformation">
<!--主键的方式用id标签。-->
<id name="id" column="id" type="java.lang.Integer">
<!--<generator class="native"></generator>--><!-- 这个标签用来定义主键生成策略。
有这个标签的时候插入会抛出异常,因为表时我自己建的,并不是由Hibernate自动生成的!-->
</id> <property name="name" column="name" type="java.lang.String" not-null="true">
</property> <!--name属性为javaBean相对应的字段,column属性为数据库中的数据表对应的列名,type为数据库中的字段的类型-->
<property name="author" column="author" type="java.lang.String" not-null="true">
</property> <property name="price" column="price" type="java.lang.Double" not-null="true">
</property> <property name="bookCount" column="bookCount" type="int" not-null="true">
</property>
</class>
</hibernate-mapping> 第四步:
在我的创建的一个HibernateUtil的类的前提下,使用hibernate的API。
public class HibernateUtil {
private static final ThreadLocal<Session>threadLocal=new ThreadLocal<Session>(); private static SessionFactory sessionFactory=null; static {
try {
Configuration configuration = new Configuration().configure(); ServiceRegistry serviceRegistry = new ServiceRegistryBuilder()
.applySettings(configuration.getProperties())
.buildServiceRegistry();//你麻痹你就不能写个类把这些方法包装起来!!! sessionFactory=configuration.buildSessionFactory(serviceRegistry); } catch (Exception e) {
System.out.println("创建会话工厂失败!");
e.printStackTrace();
}
} public static Session getSession() throws HibernateException{
Session session=(Session)threadLocal.get();
if (session==null||!session.isOpen()) {
if (sessionFactory == null)
rebuildSessionFactory();
session = (sessionFactory != null) ? sessionFactory.openSession() : null;
threadLocal.set(session);
}
return session;
} public static void rebuildSessionFactory(){
try {
Configuration configuration = new Configuration().configure(); ServiceRegistry serviceRegistry = new ServiceRegistryBuilder()
.applySettings(configuration.getProperties())
.buildServiceRegistry();//你麻痹你就不能写个类把这些方法包装起来!!! sessionFactory=configuration.buildSessionFactory(serviceRegistry); } catch (Exception e) {
System.out.println("创建会话工厂失败!");
e.printStackTrace();
}
} public static SessionFactory getSessionFactory(){
return sessionFactory;
} public static void closeSession() throws HibernateException{
Session session=(Session)threadLocal.get();
threadLocal.set(null);
if (session!=null)
session.close();
}
}
具体使用hibernate的API,参照包Hibernate
Hibernate的初次使用的更多相关文章
- Hibernate笔记——Hibernate介绍和初次环境配置
Hibernate简介 Hibernate是一个开放源代码的对象关系映射框架,它对JDBC进行了非常轻量级的对象封装,使得Java程序员可以随心所欲的使用对象编程思维来操纵数据库. Hibernate ...
- hibernate初次配置问题
1.自动创建表结构 在hibernate.cfg.xml配置文件中修改 <property name="hibernate.hbm2ddl.auto">update&l ...
- Hibernate 系列 03 - 使用Hibernate完成持久化操作
引导目录: Hibernate 系列教程 目录 康姆昂,北鼻,来此狗.动次打次,Hibernate继续走起. 目录: 使用Hibernate实现按主键查询 使用Hibernate实现数据库的增.删.改 ...
- 最新版ssh hibernate spring struts2环境搭建
最新版ssh hibernate spring struts2环境搭建 最新版spring Framework下载地址:spring4.0.0RELEASE环境搭建 http://repo.sprin ...
- HIbernate的脏数据检测和延缓加载
脏数据监测: 在一个事务中,加载的数据,除了返回给用户之外,会复制一份在session中,在事务提交时,会用session中的备份和用户的数据进行比对,如果用户的数据状态改变, 则用户的数据即为:脏数 ...
- 【java】spring-data-jpa 集成hibernate实现多条件分页查询
初次接触spring-data-jpa,实现多条件分页查询. 基础环境 Spring Boot+spring-data-jpa+hibernate+mysql 1.接口 要继承这个接口,这个接口提供了 ...
- [转]PO和VO、关于延迟加载(lazy)和强制加载(Hibernate.initialize(Object proxy) )
摘自http://www.cnblogs.com/kelin1314/archive/2009/11/13/1602778.html PO和VO PO 即Persistence Object VO 即 ...
- hibernate one-to-many many-to-one 双向注解
建表语句: DROP TABLE IF EXISTS `t_company`; CREATE TABLE `t_company` ( `companyId` ) unsigned NOT NULL A ...
- 【J2EE】Hibernate
Hibernate是面向Java环境的对象/关系数据库映射工具,管理Java应用和数据库之间的映射关系,提供数据查询和获取数据的方法,可以大幅减少使用JDBC处理数据持久化的时间. 使用Eclipse ...
随机推荐
- CSS命名方式=》BEM
时间:2016-11-04 20:04:53 原文地址:https://github.com/zhongxia245/blog/issues/48 一.背景 挺早就听说过BEM了,也大概的知道怎么用, ...
- 17秋 软件工程 团队第五次作业 Alpha Scrum7
17秋 软件工程 团队第五次作业 Alpha Scrum7 今日完成的任务 世强:部员详情列表的编写与数据交互,完善APP通知模块: 港晨:完成前端登陆界面编写: 树民:完善Web后端数据库访问模块: ...
- json.decoder.JSONDecodeError: Unexpected UTF-8 BOM (decode using utf-8-sig): line 1 column 1
问题描述:使用Python代码将txt城市列表文件转换为xls文件,源码如下, #!/usr/bin/env Python # coding=utf-8 import os import json i ...
- Arduino IDE for ESP8266 (4)局域网 网页图形化控制灯 路由系统
用到的路由系统文件(备用) 链接:https://pan.baidu.com/s/1bqR7Lc7 密码:7w2z 教程http://www.windworkshop.cn/?p=1274
- 20145236《网络对抗》Exp8 WEB基础实践
20145236<网路对抗>Exp8 WEB基础实践 一.基础问题回答 什么是表单 表单在网页中主要负责数据采集功能 一个表单有三个基本组成部分: 表单标签 表单域:包含了文本框.密码框. ...
- ucml设置列表分页类型
aginationCtype 分页栏显示效果配置,取值为UCML.Pagination或UCML.PaginationMin,默认为UCML.PaginationMin,在视图显示前设置. 1.pag ...
- odoo 学习
1.2.3.41.2.5.62.410.6变成1.234,1.256,2.4,10.6 def get_bom_namenum(self, cr, uid, ids, field_name, arg, ...
- bitcoin 源码解析 - 交易 Transaction(二) - 原理篇
这篇文章我断断续续写了呃···· 应该快三个星期了? 所以前后的风格可能差别相当大.真是十分的怠惰啊··· 最近实在是不够努力.用python重写bitcoin的项目也卡在网络编程部分(这方面真是我的 ...
- 我的物联网项目专题移到网站:http://51jdk.com
我的物联网项目专题移到网站:http://51jdk.com
- .NET日志记录之——log4net划重点篇
.NET日志记录之--log4net划重点篇 1.概述 log4net是.Net下一个非常优秀的开源日志记录组件.log4net记录日志的功能非常强大.它可以将日志分不同的等级,以不同的格式,输出到不 ...