hibernate连接数据库和使用
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连接数据库和使用的更多相关文章
- JDBC、mybatis、hibernate连接数据库
JDBC连接数据库五步骤: 一.加载驱动 Class.forName(“com.mysql.jdbc.Driver”); 二.建立连接 Connection conn = DriverManager. ...
- MySQL数据库的使用流程,代码解释+Hibernate连接数据库
数据库的使用流程: 1.注册驱动: 2.用DriverManager.getConnection方法获得连接对象con: A方法: 3.用连接对象的createStatement()方法,获得可以执 ...
- hibernate连接数据库和反向工程
一.JSP界面连接数据库: 导包:将11个包倒进web-inf的lib目录下: 二.建立hibernate.cfg.xml的配置文件:!注意:是放到项目SRC目录下: 三.将视图切换到java下,在左 ...
- Hibernate连接数据库
包结构如下图所示(按图标进行对齐): 环境搭好后代码分为以下几步: /** * private static final Configuration CONFIGURATION; * private ...
- Hibernate连接数据库超时设置autoReconnect=true
如果连接闲置8小时 (8小时内没有进行数据库操作), mysql就会自动断开连接, 要重启tomcat. 不用hibernate的话, connection url加参数: autoReconnect ...
- hibernate连接数据库的步骤
三个准备 一.导包 mysql二.在默认src下创建hibernate.cfg.xml 1.创建xml文件,命名为hibernate.cfg.xml 2.添加约束 (在org.hibern ...
- hibernate 连接数据库时报错
错误信息 : com.mysql.jdbc.exceptions.jdbc4.MySQLNonTransientConnectionException: No operations allo ...
- *IntelliJ IDEA使用Hibernate连接数据库
在IntelliJ IDEA中配置MySQL Database.
- hibernate连接数据库中文乱码
4.做完这两步还是不行,需要修改hibernate的配置文件hibernate.cfg.xml,在配置文件配置hibernate.connection.url属性.示例: <property n ...
随机推荐
- P4147 玉蟾宫 二维DP 悬线法
题目背景 有一天,小猫rainbow和freda来到了湘西张家界的天门山玉蟾宫,玉蟾宫宫主蓝兔盛情地款待了它们,并赐予它们一片土地. 题目描述 这片土地被分成N*M个格子,每个格子里写着'R'或者'F ...
- python学习笔记1-python相关应用套件
完整的数据分析套件 统计科学计算 Numpy,Scipy,statsmodels 深度学习 TensorFlow,MXNET 结构化数据处理与分析 Pandas 大数据处理 PySpark 数据探索编 ...
- Android Studio帮助文档的安装及智能提示设置
初次使用Android Studio,发现其智能提示不能像Visual Studio一样显示系统方法等的详细用途描述.经查找资料,问题原因是未安装SDK Document. 解决办法如下: 1.打开如 ...
- 【管理篇】用户故事STORY
项目管理中,常常听说story,用户故事 “一开始就做对系统”纯属神话,反之,我们应该去实现今天的用户故事,然后重构,明天再拓展系统.实现新的用户故事.这就是迭代和增量敏捷的精粹所在.
- 论Photoshop的正确安装姿势
Adobe Photoshop 俗称 PS 专业的平面设计软件之一,是Adobe公司最最最牛逼的软件之一.入门很容易,但是想掌握高超的修图,仅靠后天99%的努力是没用的,设计这个东西,讲到底需要的是灵 ...
- 七、Servlet概述
Servlet概述 生命周期方法:void init(ServletConfig):出生之后(1次):void service(ServletRequest request, ServletRes ...
- C++中的常量函数
(1)常量成员函数不修改对象. (2)常量成员函数在定义和声明中都需要加上 const; (3)非常量成员函数不能被常量成员函数调用,但构造函数和析构函数除外. (4)常量(cosnt对象)对象不能调 ...
- js文档就绪函数
$(function(){ //执行的内容 }): $().ready(function(){ //执行的内容 }); $(document).ready(function(){ //执行的内容 }) ...
- canvas动态修改宽高问题
Canvas元素默认宽 300px, 高 150px, 设置其宽高可以使用如下方法:方法一:1 <canvas width="500" height="500&qu ...
- Python全栈-magedu-2018-笔记1
第一章 - Python 环境搭建 操作系统准备 准备Linux最小系统即可. 如果在虚拟机中克隆,MAC地址会变. 这里使用CentOS 6.5+ Pyenv 安装 安装git yum instal ...