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. 各种Handler

    ArrayHandler:把结果集中的第一行数据转成对象数组. ArrayListHandler:把结果集中的每一行数据都转成一个对象数组,再存放到List中. BeanHandler:将结果集中的第 ...

  2. Jarvis OJ 一些简单的re刷题记录和脚本

    [61dctf] androideasy 164求解器 50 相反 脚本如下: s='' a=113, 123, 118, 112, 108, 94, 99, 72, 38, 68, 72, 87, ...

  3. JSONObject类的引用必须jar包

    JSONObject所必需的6个jar包: commons-beanutils-1.7.0.jar commons-collections-3.1.jar commons-lang-2.5.jar c ...

  4. OpenStack共享组件

    一.云计算的前世今生 1.物理机架构,应用部署和运行在物理机上  2.虚拟化架构,物理机上运行若干虚拟机,应用系统直接部署到虚拟机上  3.云计算架构,虚拟化提高了单台物理机的资源使用率 二.Open ...

  5. python使用urllib2 http 下载参数的try catch

    import urllib2 req = urllib2.Request('http://blog.csdn.net/cqcre')try: urllib2.urlopen(req)except ur ...

  6. Redis自学笔记:4.4进阶-消息通知

    4.4消息通知 4.4.1任务队列 传递任务的队列.与任务队列进行交互的实体有两类,一类是生产者,一类是消费者. 生产者将需要处理的任务放入任务队列中,二消费者不断从任务队列中读入任务 信息并执行. ...

  7. 面试题总结(PS:只是我遇到的那些面试题,并不是经典面试题)

    一.类和结构的区别,分别有什么应用.(参考:https://blog.csdn.net/yikeshu19900128/article/details/40400479) 1)类是引用类型,数据存放在 ...

  8. Spring Cloud微服务笔记(一)微服务概念

    微服务概念 一.什么是微服务架构 微服务,是一个小的.松耦合的分布式服务. 为什么需要微服务: 1)单体系统部署在一个进程中,修改了一个小功能,为了部署上线就会影响其他功能. 2)单体应用各个功能模块 ...

  9. 版本管理_svn_检出_更新_提交_本机 MAC 地址_冲突

    版本管理 git svn [subversion] 实现集中式的版本控制工具软件 来源于最初的工程图纸. 需求: 备份还原 协同修改 权限控制 弊端:集中式(管理方便,但是如果中心服务器瘫痪,整个开发 ...

  10. 转载:[Java面经]干货整理, Java面试题(覆盖Java基础,Java高级,JavaEE,数据库,设计模式等)

    原文:http://www.cnblogs.com/wang-meng/p/5898837.html 一:继承.抽象类与接口区别.访问控制(private, public, protected,默认) ...