hibernate.cfg.xml

<?xml version="1.0" encoding="UTF-8"?>
<!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="connection.driver_class">com.microsoft.sqlserver.jdbc.SQLServerDriver</property>
<property name="connection.url">jdbc:sqlserver://localhost:1433;DatabaseName=UsersDB</property>
<property name="connection.username">sa</property><!-- 指定数据库用户名 -->
<property name="connection.password">1234</property><!-- 指定数据库密码 -->
<property name="hibernate.show_sql">true</property>
<property name="dialect">org.hibernate.dialect.SQLServerDialect</property>
<!-- 配置映射文件 -->
<mapping resource="com/ssh/models/Users.hbm.xml"/>
</session-factory>
</hibernate-configuration>

HibernateSessionFactory.java模板

public class HibernateSessionFactory {
//实例化ThreadLocal类
private static final ThreadLocal<Session> threadLocal = new ThreadLocal<Session>();
//实例化Configuration类
private static Configuration configuration = new Configuration();
//声明SessionFactory接口,采用工厂模式
private static SessionFactory sessionFactory;
//定义configFile变量并赋值
private static String configFile = "/hibernate.cfg.xml";
//静态块
static {
try {
//读取默认的配置文件hibernate.cfg.xml, 连接数据库
configuration.configure(configFile);
//实例化SessionFactory
sessionFactory = configuration.buildSessionFactory();
} catch (Exception e) {
e.printStackTrace();
}
}
private HibernateSessionFactory() { }//创建无参的HibernateSessionFactory构造函数
//获取Session
public static Session getSession() throws HibernateException {
Session session = (Session) threadLocal.get();
//判断是否已经存在Session对象
if (session == null || !session.isOpen()) {
//如果SessionFactory对象为null,则创建SessionFactory
if (sessionFactory == null) {
rebuildSessionFactory();//调用rebuildSessionFactory方法创建SessionFactory
}
//判断SessionFactory对象是否为null,如果不是,则打开Session
session = (sessionFactory != null) ? sessionFactory.openSession(): null;
threadLocal.set(session);
} return session;
}
//重新创建SessionFactory
public static void rebuildSessionFactory() {
try {
configuration.configure(configFile);
sessionFactory = configuration.buildSessionFactory();
} catch (Exception e) {
e.printStackTrace();
}
}
//关闭Session
public static void closeSession() throws HibernateException {
Session session = (Session) threadLocal.get();
threadLocal.set(null);
if (session != null) {
session.close();
}
}
//SessionFactory对象的getXXX()方法
public static SessionFactory getSessionFactory() {
return sessionFactory;
}
//configFile属性的setXXX()方法
public static void setConfigFile(String configFile) {
HibernateSessionFactory.configFile = configFile;
sessionFactory = null;
}
//Configuration属性的getXXX()方法
public static Configuration getConfiguration() {
return configuration;
}
}

UsersDao.java使用HibernateSessionFactory

public class UsersDao {
//验证登录
public boolean checkLogin(Users user){
boolean flag=true;
//得到session
Session session=null;
try{
session=HibernateSessionFactory.getSession();
//hql语句,Users代表是models里的实体类,name和password代表实体类的属性
String queryString="from Users where name=? and password=?";
//创建查询
Query queryObject=session.createQuery(queryString);
queryObject.setParameter(0, user.getName());
queryObject.setParameter(1, user.getPassword());
//执行查询获得的结果,list中的每一个元素代表一个Users的对象
List list=queryObject.list();
if(list.size()==0){
flag=false;//登陆不成功
}
return flag;
}catch (Exception e) {
e.printStackTrace();
return false;
}finally{//关闭session
HibernateSessionFactory.closeSession();//调用HibernateSessionFactory的静态方法关闭Session
}
}
//注册用户的方法
public int registerUser(Users user){
int num=0;//标识注册是否成功,0表示不成功,>0成功
//得到session
Session session=null;
Transaction transaction=null;
try{
session=HibernateSessionFactory.getSession();
transaction=session.beginTransaction();
num=Integer.parseInt(session.save(user).toString());
transaction.commit(); //写入数据库,
}catch (Exception e) {
e.printStackTrace();
num=0;
}finally{//关闭session
HibernateSessionFactory.closeSession();//调用HibernateSessionFactory的静态方法关闭Session
}
return num;
}
}

基础类和他xml配置,简单样例。

Users.java

public class Users {
private int id;
private String name;
private String password;
private String sex;
private int age;
private String email;
public Users(){ }
public int getId() {
return id;
}
public void setId(int id) {
this.id = id;
}
public String getName() {
return name;
}
public void setName(String name) {
this.name = name;
}
public String getPassword() {
return password;
}
public void setPassword(String password) {
this.password = password;
}
public String getSex() {
return sex;
}
public void setSex(String sex) {
this.sex = sex;
}
public int getAge() {
return age;
}
public void setAge(int age) {
this.age = age;
}
public String getEmail() {
return email;
}
public void setEmail(String email) {
this.email = email;
}
}

Users.hbm.xml

<?xml version="1.0" encoding="UTF-8"?>
<!DOCTYPE hibernate-mapping PUBLIC
"-//Hibernate/Hibernate Mapping DTD 3.0//EN"
"http://www.hibernate.org/dtd/hibernate-mapping-3.0.dtd">
<hibernate-mapping>
<class name="com.ssh.models.Users" table="Users">
<id name="id" column="id" > <!-- 配置主键 -->
<generator class="native"/>
</id>
<!-- 配置其他属性 -->
<property name="name" length="20"/>
<property name="password" length="20"/>
<property name="sex" length="2"/>
<property name="age"/>
<property name="email" length="50"/>
</class>
</hibernate-mapping>

hibernate连接数据库和使用的更多相关文章

  1. JDBC、mybatis、hibernate连接数据库

    JDBC连接数据库五步骤: 一.加载驱动 Class.forName(“com.mysql.jdbc.Driver”); 二.建立连接 Connection conn = DriverManager. ...

  2. MySQL数据库的使用流程,代码解释+Hibernate连接数据库

    数据库的使用流程: 1.注册驱动: 2.用DriverManager.getConnection方法获得连接对象con: A方法:  3.用连接对象的createStatement()方法,获得可以执 ...

  3. hibernate连接数据库和反向工程

    一.JSP界面连接数据库: 导包:将11个包倒进web-inf的lib目录下: 二.建立hibernate.cfg.xml的配置文件:!注意:是放到项目SRC目录下: 三.将视图切换到java下,在左 ...

  4. Hibernate连接数据库

    包结构如下图所示(按图标进行对齐): 环境搭好后代码分为以下几步: /** * private static final Configuration CONFIGURATION; * private ...

  5. Hibernate连接数据库超时设置autoReconnect=true

    如果连接闲置8小时 (8小时内没有进行数据库操作), mysql就会自动断开连接, 要重启tomcat. 不用hibernate的话, connection url加参数: autoReconnect ...

  6. hibernate连接数据库的步骤

    三个准备 一.导包   mysql二.在默认src下创建hibernate.cfg.xml   1.创建xml文件,命名为hibernate.cfg.xml 2.添加约束   (在org.hibern ...

  7. hibernate 连接数据库时报错

         错误信息 : com.mysql.jdbc.exceptions.jdbc4.MySQLNonTransientConnectionException: No operations allo ...

  8. *IntelliJ IDEA使用Hibernate连接数据库

    在IntelliJ IDEA中配置MySQL Database.

  9. hibernate连接数据库中文乱码

    4.做完这两步还是不行,需要修改hibernate的配置文件hibernate.cfg.xml,在配置文件配置hibernate.connection.url属性.示例: <property n ...

随机推荐

  1. P4147 玉蟾宫 二维DP 悬线法

    题目背景 有一天,小猫rainbow和freda来到了湘西张家界的天门山玉蟾宫,玉蟾宫宫主蓝兔盛情地款待了它们,并赐予它们一片土地. 题目描述 这片土地被分成N*M个格子,每个格子里写着'R'或者'F ...

  2. python学习笔记1-python相关应用套件

    完整的数据分析套件 统计科学计算 Numpy,Scipy,statsmodels 深度学习 TensorFlow,MXNET 结构化数据处理与分析 Pandas 大数据处理 PySpark 数据探索编 ...

  3. Android Studio帮助文档的安装及智能提示设置

    初次使用Android Studio,发现其智能提示不能像Visual Studio一样显示系统方法等的详细用途描述.经查找资料,问题原因是未安装SDK Document. 解决办法如下: 1.打开如 ...

  4. 【管理篇】用户故事STORY

    项目管理中,常常听说story,用户故事 “一开始就做对系统”纯属神话,反之,我们应该去实现今天的用户故事,然后重构,明天再拓展系统.实现新的用户故事.这就是迭代和增量敏捷的精粹所在.

  5. 论Photoshop的正确安装姿势

    Adobe Photoshop 俗称 PS 专业的平面设计软件之一,是Adobe公司最最最牛逼的软件之一.入门很容易,但是想掌握高超的修图,仅靠后天99%的努力是没用的,设计这个东西,讲到底需要的是灵 ...

  6. 七、Servlet概述

    Servlet概述 生命周期方法:void init(ServletConfig):出生之后(1次):void service(ServletRequest request, ServletRes ...

  7. C++中的常量函数

    (1)常量成员函数不修改对象. (2)常量成员函数在定义和声明中都需要加上 const; (3)非常量成员函数不能被常量成员函数调用,但构造函数和析构函数除外. (4)常量(cosnt对象)对象不能调 ...

  8. js文档就绪函数

    $(function(){ //执行的内容 }): $().ready(function(){ //执行的内容 }); $(document).ready(function(){ //执行的内容 }) ...

  9. canvas动态修改宽高问题

    Canvas元素默认宽 300px, 高 150px, 设置其宽高可以使用如下方法:方法一:1 <canvas width="500" height="500&qu ...

  10. Python全栈-magedu-2018-笔记1

    第一章 - Python 环境搭建 操作系统准备 准备Linux最小系统即可. 如果在虚拟机中克隆,MAC地址会变. 这里使用CentOS 6.5+ Pyenv 安装 安装git yum instal ...