0

0

简单的Hibernate访问数据库Demo

php中文网

php中文网

发布时间:2016-06-07 16:10:38

|

1257人浏览过

|

来源于php中文网

原创

最近在学习ssh,现在看到hibernate这块,动手实现了一个简单的demo,对hibernate的功能、使用有了初步了解。 1、首先将Hibernate的jar包复制到Web项目的lib目录下。有些依赖jar包,要额外导入;比如cglib-nodep.jar,不然会报错。 2、配置实体类。这里我用的

最近在学习ssh,现在看到hibernate这块,动手实现了一个简单的demo,对hibernate的功能、使用有了初步了解。

1、首先将Hibernate的jar包复制到Web项目的lib目录下。有些依赖jar包,要额外导入;比如cglib-nodep.jar,不然会报错。

2、配置实体类。这里我用的是一个简单Account类,要注意使用的是javax.persistense.*下面的注解,不是org.hibernate.*下的。

 

简灰服装商城整站 For SHOPEX
简灰服装商城整站 For SHOPEX

SHOPEX简灰服装商城整站源码下载。 安装方法:1.解压上传程序至网站根目录.. 访问:域名/bak.(用户名:admin 密码:123456)2.进入帝国备份王后,配置数据库数据库信息.选择-www.taomoban.net目录.还原数据库.3.修改FTP目录下的config/config.phpphp 数据库连接信息.4.登陆网站后台--清空缓存..5.删除bak文件夹 后台:shopadm

下载
package com.jobhelp.domain;

import javax.persistence.Column;
import javax.persistence.Entity;
import javax.persistence.GeneratedValue;
import javax.persistence.GenerationType;
import javax.persistence.Id;
import javax.persistence.Table;

@Entity		//@Entity表示该类能被hibernate持久化
@Table(name="user")		//指定Entity对应的数据表名
public class Account {
	
	@Id		//指定该列为主键
	@GeneratedValue(strategy=GenerationType.AUTO)	//auto为自增长
	private Integer id;
	
	@Column(name="name")
	private String username;
	
	@Column(name="password")
	private String password;
	public int getId() {
		return id;
	}
	public void setId(int id) {
		this.id = id;
	}
	public String getUsername() {
		return username;
	}
	public void setUsername(String username) {
		this.username = username;
	}
	public String getPassword() {
		return password;
	}
	public void setPassword(String password) {
		this.password = password;
	}

}

3、在src目录下新建Hibernate的配置文件hibernate.cfg.xml。(MyEclipse向导会自动生成,我用的是Eclipse,就得自己创建了。)

 

hibernate.cfg.xml的内容如下:

 





	
	
		
		com.mysql.jdbc.Driver 
		
		
			jdbc:mysql://localhost/User
		
		
		root 
		
		123456 
		
		20 
		
		true 
		
		50 
		
		23 
		
		false 
		
		true 
		
		

		
		org.hibernate.dialect.MySQLDialect 
		
		
		
	

4、新建Hibernate工具类,用于获取session。Hibernate中每一个session代表一次完整的数据库操作。

 

Hibernate官方提供的HibernateUtil.java

 

package com.jobhelp.util;

import org.hibernate.SessionFactory;
import org.hibernate.cfg.AnnotationConfiguration;

public class HibernateUtil {

	private static final SessionFactory sessionFactory;//单例模式的SessionFactory
	
	//static代码块,类加载时初始化hibernate,单例只初始化一次
	static{
		try{
			//从hibernate.cfg.xml中加载配置
			//加载@注解配置的实体类用AnnotationConfiguration()
			//加载xml配置的实体类使用Configuration()
			sessionFactory = new AnnotationConfiguration()
						.configure("hibernate.cfg.xml").buildSessionFactory();
		} catch (Throwable ex){
			System.err.println("Initial SessionFactory Error");
			throw new ExceptionInInitializerError(ex);
		}
	}
	
	public static SessionFactory getSessionFactory(){
		return sessionFactory;
	}
}

5、初始化MySql数据库,建一个简单的User表即可,我用的表数据如下。

 

 

mysql> select * from user;
+----+-------+----------+
| id | name  | password |
+----+-------+----------+
|  1 | admin | 123456   |
|  2 | bowen | 123456   |
|  3 | tom   | 123456   |
|  4 | jack  | 123456   |
+----+-------+----------+

6、执行hibernate程序。Hibernate是ORM框架,与数据库打交道。

 

Hibernate中session会话与JDBC操作数据库流程差不多。

相对Spring中jdbcTemplate的使用,hibernate不用写sql语句,不用封装结果;逻辑清晰,代码简洁很多,显然有利于提高开发效率。

下面是在一个Test类中,执行了Hibernate程序的代码。

 

package com.jobhelp.util;

import java.util.List;

import org.hibernate.Session;
import org.hibernate.Transaction;

import com.jobhelp.domain.Account;

public class Test {
	
	public static void main(String[] agrs){
		/*Account account =new Account();
		account.setUsername("jack");
		account.setPassword("123456");*/
		
		//start a hibernate session
		Session session = HibernateUtil.getSessionFactory().openSession();
		//start a transaction
		Transaction transaction = session.beginTransaction();
		
		//insert into database
		//session.persist(account);
		
		@SuppressWarnings("all")
		//hql query
		List list =session.createQuery("from Account").list();
		
		//print query result
		for(Account account2: list){
			System.out.println(account2.getId()+" : "+account2.getUsername());
		}
		
		transaction.commit();
		session.close();
	}

}
执行结果:

 

 

[2014-11-24 21:26:19,083][DEBUG][org.hibernate.jdbc.AbstractBatcher:366] - about to open PreparedStatement (open PreparedStatements: 0, globally: 0)
[2014-11-24 21:26:19,083][DEBUG][org.hibernate.SQL:401] - select account0_.id as id0_, account0_.password as password0_, account0_.name as name0_ from user account0_
Hibernate: select account0_.id as id0_, account0_.password as password0_, account0_.name as name0_ from user account0_
......
[2014-11-24 21:26:19,108][DEBUG][org.hibernate.engine.StatefulPersistenceContext:787] - initializing non-lazy collections
1 : admin
2 : bowen
3 : tom
4 : jack
[2014-11-24 21:26:19,109][DEBUG][org.hibernate.transaction.JDBCTransaction:103] - commit
......

注意:Hibernate只会生成表结构,但不会创建数据库。如果指定数据库不存在,hibernate会抛出异常。

 

热门AI工具

更多
DeepSeek
DeepSeek

幻方量化公司旗下的开源大模型平台

豆包大模型
豆包大模型

字节跳动自主研发的一系列大型语言模型

通义千问
通义千问

阿里巴巴推出的全能AI助手

腾讯元宝
腾讯元宝

腾讯混元平台推出的AI助手

文心一言
文心一言

文心一言是百度开发的AI聊天机器人,通过对话可以生成各种形式的内容。

讯飞写作
讯飞写作

基于讯飞星火大模型的AI写作工具,可以快速生成新闻稿件、品宣文案、工作总结、心得体会等各种文文稿

即梦AI
即梦AI

一站式AI创作平台,免费AI图片和视频生成。

ChatGPT
ChatGPT

最最强大的AI聊天机器人程序,ChatGPT不单是聊天机器人,还能进行撰写邮件、视频脚本、文案、翻译、代码等任务。

相关专题

更多
java 抽象方法
java 抽象方法

本专题整合了java抽象方法定义、作用教程等内容,阅读专题下面的文章了解更多详细内容。

0

2026.02.05

Eclipse创建jsp文件教程合集
Eclipse创建jsp文件教程合集

本专题整合了Eclipse创建jsp文件、创建jsp项目等等内容,阅读专题下面的文章了解更多详细教程。

0

2026.02.05

java 字符串转数字
java 字符串转数字

本专题整合了java如何字符串转数字相关内容,阅读专题下面的文章了解更多详细教程。

2

2026.02.05

java中jlabel的作用
java中jlabel的作用

本专题整合了java中label相关内容,阅读专题下面的文章了解更多详细教程。

0

2026.02.05

java return合集
java return合集

本专题整合看java中return关键词的用途,语句的使用等等内容,阅读专题下面的文章了解更多详细内容。

2

2026.02.05

AO3官网入口与镜像站汇总 Archive of Our Own访问路径及最新入口
AO3官网入口与镜像站汇总 Archive of Our Own访问路径及最新入口

本专题专注于提供Archive of Our Own (AO3) 的最新官网入口与镜像站地址,详细整理了可用的访问路径,包括中文镜像站入口和网页版直达链接,帮助用户轻松找到最稳定的访问方式,确保顺畅浏览AO3内容。

8

2026.02.05

192.168.1.1路由器后台管理入口与设置登录指南
192.168.1.1路由器后台管理入口与设置登录指南

本专题汇总了192.168.1.1路由器的后台管理入口、登录网址以及无线网络设置的方法,帮助用户快速进入路由器管理页面,进行网络配置、密码修改等常见操作,提升家庭网络的管理与优化效率。

1

2026.02.05

Python 数据库优化与性能调优
Python 数据库优化与性能调优

本专题专注讲解 Python 在数据库性能优化中的应用,包括数据库连接池管理、SQL 查询优化、索引设计与使用、数据库事务管理、分布式数据库与缓存系统的结合。通过分析常见性能瓶颈,帮助开发者掌握 如何优化数据库操作,提升 Python 项目在数据库层的响应速度与处理能力。

2

2026.02.05

Java 微服务与 Spring Cloud 实战
Java 微服务与 Spring Cloud 实战

本专题讲解 Java 微服务架构的开发与实践,重点使用 Spring Cloud 实现服务注册与发现、负载均衡、熔断与限流、分布式配置管理、API Gateway 和消息队列。通过实际项目案例,帮助开发者理解 如何将传统单体应用拆分为高可用、可扩展的微服务架构,并有效管理和调度分布式系统中的各个组件。

0

2026.02.05

热门下载

更多
网站特效
/
网站源码
/
网站素材
/
前端模板

精品课程

更多
相关推荐
/
热门推荐
/
最新课程
Bootstrap 5教程
Bootstrap 5教程

共46课时 | 3.2万人学习

jQuery 教程
jQuery 教程

共42课时 | 5.5万人学习

MySQL 初学入门(mosh老师)
MySQL 初学入门(mosh老师)

共3课时 | 0.3万人学习

关于我们 免责申明 举报中心 意见反馈 讲师合作 广告合作 最新更新
php中文网:公益在线php培训,帮助PHP学习者快速成长!
关注服务号 技术交流群
PHP中文网订阅号
每天精选资源文章推送

Copyright 2014-2026 https://www.php.cn/ All Rights Reserved | php.cn | 湘ICP备2023035733号