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. SparkCore | Rdd| 广播变量和累加器

    Spark中三大数据结构:RDD:  广播变量: 分布式只读共享变量: 累加器:分布式只写共享变量: 线程和进程之间 1.RDD中的函数传递 自己定义一些RDD的操作,那么此时需要主要的是,初始化工作 ...

  2. Boredom

    Alex doesn't like boredom. That's why whenever he gets bored, he comes up with games. One long winte ...

  3. Huginn定时时间不准确或延后问题

    碰巧遇到的:Huginn定时为每天晚上九点执行的任务,却在午后1点执行了, 查了下,午后一点,正好是太平洋时间前一天的晚上9点,一开始没考虑到,午后调试程序,它莫名其妙执行了一次,才发现问题, 那就换 ...

  4. (二)文档请求不同源之window.name跨域

    一.基本原理 window.name不是一个普通的全局变量,而是当前窗口的名字.这里要注意的是每个iframe都有包裹它的window,而这个window 是top window的子窗口,而它自然也有 ...

  5. Python-读文件

    用python读一个文件,我们一般采用  open('文件名字')这里的文件名可以说完整路径也可以是相对路径(要读取的文件和和代码放在一起) f = open('data.txt')此时我们只是打开了 ...

  6. SoapUI破解及安装教程

    之前学了一段时间的SoapUI,但是好久不用了,这里记录下专业版的破解的流程,后续的学习会不断更新. soapUI安装及破解(这里针对专业版) 下载地址:http://dl.eviware.com/l ...

  7. javascript的数组之splice()

    splice()方法通过删除现有元素和/或添加新元素来更改一个数组的内容.修改数组自身 var months = ['Jan', 'March', 'April', 'June']; months.s ...

  8. 移动端web开发常见问题

    1.移动端如何定义字体font-family 三大手机系统的字体: ios 系统 默认中文字体是Heiti SC 默认英文字体是Helvetica 默认数字字体是HelveticaNeue 无微软雅黑 ...

  9. python升级pip和Django安装

    1.centos7默认python版本为2.7.5,现升级到3.6.0 2.wget https://www.python.org/ftp/python/3.6.0/Python-3.6.0.tgz ...

  10. spark-sql jdbc操作mysql

    SparkConf sparkConf = new SparkConf() .setMaster("local") .setAppName("MySqlTest" ...