hibernate入门Word文件下载.docx
- 文档编号:21655863
- 上传时间:2023-01-31
- 格式:DOCX
- 页数:15
- 大小:19.68KB
hibernate入门Word文件下载.docx
《hibernate入门Word文件下载.docx》由会员分享,可在线阅读,更多相关《hibernate入门Word文件下载.docx(15页珍藏版)》请在冰豆网上搜索。
}
publicIntegergetId(){
returnid;
publicvoidsetId(Integerid){
this.id=id;
publicStringgetName(){
returnname;
publicvoidsetName(Stringname){
publicintgetAge(){
returnage;
publicvoidsetAge(intage){
publicStringgetStatus(){
returnstatus;
publicvoidsetStatus(Stringstatus){
}
4写获得Connection的JdbcUtil类
packagecom.chinasofti.util;
importjava.io.IOException;
importjava.io.InputStream;
importjava.sql.Connection;
importjava.sql.DriverManager;
importjava.sql.SQLException;
importjava.util.Properties;
publicclassJdbcUtil{
privatestaticStringdriver;
privatestaticStringurl;
privatestaticStringusername;
privatestaticStringpassword;
privatestaticThreadLocal<
Connection>
tlc=newThreadLocal<
();
//静态代码块
static{
Propertiesprop=newProperties();
//jdbc.properties文件与JdbcUtil在同一目录下
InputStreaminStream=
JdbcUtil.class
.getResourceAsStream("
jdbc.properties"
);
try{
prop.load(inStream);
driver=prop.getProperty("
driver"
url=prop.getProperty("
url"
username=prop.getProperty("
user"
password=prop.getProperty("
password"
}catch(IOExceptione){
e.printStackTrace();
}
publicstaticConnectiongetConnection(){
//从ThreadLocal对象中获得与当前线程绑定的连接
Connectioncon=tlc.get();
if(con==null){
try{
//加载mysql驱动包
Class.forName(driver);
//获得一个新的数据库的连接
con=
DriverManager
.getConnection(url,username,password);
}catch(Exceptione){
e.printStackTrace();
}
returncon;
publicstaticvoidcloseConnection(Connectioncon){
if(con!
=null){
con.close();
}catch(SQLExceptione){
5创建Dao类Dao是用来操作数据库数据的对象
packagecom.chinasofti.dao;
importjava.sql.PreparedStatement;
importjava.sql.ResultSet;
importjava.util.ArrayList;
importjava.util.List;
importcom.chinasofti.pojo.Person;
importcom.chinasofti.util.JdbcUtil;
publicclassPersonDao{
publicList<
Person>
findPersons(){
List<
persons=newArrayList<
//获得数据库连接
Connectioncon=JdbcUtil.getConnection();
//创建预编译Sql语句,防止SQL注入
Stringsql="
select*fromtbl_person"
;
PreparedStatementprs=con.prepareStatement(sql);
//执行sql语句,查询数据库
ResultSetrs=prs.executeQuery();
//把从数据库中查询到的数据封装到Person对象中
Personp=null;
while(rs.next()){
p=newPerson();
p.setId(rs.getInt("
id"
));
p.setName(rs.getString("
name"
p.setAge(rs.getInt("
age"
p.setStatus(rs.getString("
status"
persons.add(p);
}catch(SQLExceptione){
returnpersons;
5创建测试类TestJdbc类,测试连接是否成功获取
packagecom.chinasofti.test;
importorg.junit.Test;
importcom.chinasofti.dao.PersonDao;
publicclassTestJdbc{
@Test
publicvoidtest1(){
System.out.println(con);
@Test
publicvoidtest2(){
PersonDaodao=newPersonDao();
ps=dao.findPersons();
for(Personp:
ps){
System.out.println(p.getId()+"
"
+p.getName());
2hibernate:
orm关联关系映射框架
1创建web项目
2导入hibernate的jar包
3配置hibernate.cfg.xml主配置文件
4创建实体类与实体类映射文件Person.hbm.xml
<
?
xmlversion="
1.0"
encoding="
UTF-8"
>
<
!
DOCTYPEhibernate-configurationPUBLIC
"
-//Hibernate/HibernateConfigurationDTD3.0//EN"
http:
//www.hibernate.org/dtd/hibernate-configuration-3.0.dtd"
hibernate-configuration>
session-factory>
--连接配置-->
propertyname="
connection.driver_class"
com.mysql.jdbc.Driver
/property>
connection.url"
<
[CDATA[jdbc:
mysql:
//localhost:
3306/test?
useUnicode=true&
characterEncoding=utf-8]]>
connection.username"
root<
connection.password"
--辅助参数数据库方言-->
dialect"
org.hibernate.dialect.MySQL5Dialect
show_sql"
true<
format_sql"
false<
--获得与当前线程绑定的hibernate的session相当于jdbc的connection-->
current_session_context_class"
thread<
--映射文件-->
mappingresource="
com/chinasofti/pojo/Person.hbm.xml"
/>
/session-factory>
/hibernate-configuration>
5创建HibernateUtil类,获得Hibernate中的Session
importorg.hibernate.Session;
importorg.hibernate.SessionFactory;
importorg.hibernate.cfg.Configuration;
publicclassHibernateUtil{
privatestaticSessionFactorysessionFactory;
//加载hibernate主配置文件
Configurationcfg=newConfiguration();
cfg.configure("
hibernate.cfg.xml"
//创建hibernate的session工厂
sessionFactory=cfg.buildSessionFactory();
}
publicstaticSessiongetHibernateSession(){
//获得与当前线程绑定的hibernate的session
/*<
*/
Sessionsession=sessionFactory.getCurrentSession();
returnsession;
publicvoidcloseHibernateSession(Sessionsession){
if(session!
session.close();
6创建实体类及实体类映射文件
Person.hbm.xml文件内容
utf-8"
DOCTYPEhibernate-mappingPUBLIC
-//Hibernate/HibernateMappingDTD3.0//EN"
hibernate-mapping>
--name:
对应的实体类table:
这个实体类对应的是数据库中的哪个表-->
classname="
com.chinasofti.pojo.Person"
catalog="
test"
table="
tbl_person"
--id为主键name:
表示实体类的属性type:
属性的类型column:
对应数据库的字段-->
idname="
type="
integer"
column="
<
--用来指明主键的生成方式-->
generatorclass="
native"
/id>
--普通属性name:
column="
type="
string"
int"
/class>
/hibernate-mapping>
7创建测试类:
importorg.hibernate.Transaction;
importcom.chinasofti.util.HibernateUtil;
publicclassHibernateTest{
Sessionsession=HibernateUtil.getHibernateSession();
System.out.println(session);
+p.getName()+"
+p.getStatus());
/**
*Session:
*servlet中的Session是一次会话,就是指浏览器与服务器之间的通信
*Hibernate的Session是一个连接,就是指我们的应用程序与数据库之间的一个连接
*
*通过主键id获得数据库数据
*get()当id对应的数据不存在的时候返回null
*load()当id对应的数据不存在的时候抛出异常
*org.hibernate.OjbectNotFoundException:
*Norowwiththegivenidentifierexists
*延迟加载的问题:
*修改和新增:
*/
publicvoidtest3(){
//获得hibernate的连接
//开启事务
Transactiontx=session.beginTransaction();
//执行查询
//get()立刻加载
Personp=(Person)session.get(Person.class,1);
//延迟加载
//Personp=(Person)session.load(Person.class,1);
System.out.println(p);
//提交事务
mit();
if(p!
=null)
System.out.println(p.getId()+"
Hibernate:
select
person0_.idasid0_,
person0_.nameasname0_,
person0_.ageasage0_,
person0_.statusasstatus0_
fromtest.tbl_personperson0_
whereperson0_.status=0
对象Seesion理解:
Session分两种:
Servlet中的Session和Hibernate中的Session有什么区别?
Servlet中的Session是指浏览器访问服务器的时候,在服务器中创
建的浏览器与服务器之间的一个会话。
默认浏览器关闭则关闭。
Hibernate中的Session是指Hibernate框架与数据库的一个连接
,相当于jdbc的Connection.
其实,这两个Connection只是名字相同而已。
Hibernate中的load和get有什么区别?
load和get都是根据主键id查询数据
不同点:
load属于延迟加载
get立刻加载
当查询数据不存在的时候
load抛出异常
get返回null
事务?
作业:
jdbc实现新增、删除、修改
javaBean规范?
day02、hibernate关联映射
(一)
day03、hibernate关联映射
(二)
day04、hibernatehql和Criteria查询
day05、hibernate的高级特性(一级缓存、二级缓存、查询缓存)
Servlet
Servlet入门hello简单请求
生命周期
表单提交
JSP
Session与Cookie
Struts2
day01
介绍webMVC、BS、CS
Struts2入门
day02OGNL与Struts2标签
day03拦截器与文件上传
day04用struts2与hibernate完成一个图书管理项目的(管
- 配套讲稿:
如PPT文件的首页显示word图标,表示该PPT已包含配套word讲稿。双击word图标可打开word文档。
- 特殊限制:
部分文档作品中含有的国旗、国徽等图片,仅作为作品整体效果示例展示,禁止商用。设计者仅对作品中独创性部分享有著作权。
- 关 键 词:
- hibernate 入门