yxhxj2006
導(dǎo)航
BlogJava
首頁
新隨筆
聯(lián)系
聚合
管理
<
2012年6月
>
日
一
二
三
四
五
六
27
28
29
30
31
1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
22
23
24
25
26
27
28
29
30
1
2
3
4
5
6
7
留言簿
(7)
給我留言
查看公開留言
查看私人留言
隨筆分類
J2EE(17)
(rss)
java(13)
(rss)
Javascipt
(rss)
Linux(3)
(rss)
PHP(4)
(rss)
SQL(12)
(rss)
勵志(3)
(rss)
測試
(rss)
文章分類
paypal
(rss)
隨筆檔案
2016年6月 (1)
2015年12月 (1)
2015年11月 (1)
2015年10月 (1)
2015年8月 (1)
2015年6月 (1)
2015年5月 (3)
2015年4月 (6)
2015年3月 (1)
2015年2月 (4)
2015年1月 (4)
2014年12月 (6)
2014年11月 (1)
2014年9月 (3)
2014年6月 (2)
2014年5月 (5)
2014年4月 (3)
2014年3月 (3)
2014年2月 (15)
2014年1月 (11)
2013年12月 (1)
2013年11月 (8)
2013年10月 (6)
2013年9月 (2)
2013年8月 (19)
2013年7月 (1)
2013年6月 (1)
2013年5月 (3)
2013年4月 (3)
2013年3月 (5)
2012年12月 (3)
2012年11月 (4)
2012年10月 (1)
2012年9月 (25)
2012年8月 (54)
2012年7月 (10)
2012年6月 (7)
閱讀排行榜
1.?Hibernate實現(xiàn)有兩種配置,xml配置與注釋配置(49848)
2.?公鑰與私鑰 (42387)
3.?使用POI讀取EXCEL中的所有Sheet表 (25905)
4.?Maven實戰(zhàn)(六)依賴(11942)
5.?Oracle中把一個查詢結(jié)果插入到一張表中(11031)
評論排行榜
1.?公鑰與私鑰 (31)
2.?Hibernate實現(xiàn)有兩種配置,xml配置與注釋配置(4)
3.?Java通過URL獲取網(wǎng)站Html源代碼 (3)
4.?讓HTML中的文本框中的文字垂直居中 .(3)
5.?struts2表單傳值(2)
常用鏈接
我的隨筆
我的評論
我的參與
最新評論
統(tǒng)計
隨筆 - 228
文章 - 0
評論 - 53
引用 - 0
最新評論
1.?re: 公鑰與私鑰
評論內(nèi)容較長,點擊標(biāo)題查看
--chinaltang
2.?re: 如何在magento中建立自定義頁面
請問站長,你這個增加以下片段是在哪里增加的,還有你這是怎么顯示出來頁面呢,總要點擊頁面上的哪個東西跳轉(zhuǎn)到這個頁面吧,那點擊跳轉(zhuǎn)怎么操作
--王小丫
3.?re: 公鑰與私鑰
343434
--zhangsa
4.?re: 公鑰與私鑰
真的寫的非常好,通俗易懂,但是不知道有demo沒有,要是有求一份。
--Divella
5.?re: Hibernate實現(xiàn)有兩種配置,xml配置與注釋配置[未登錄]
sa
--sa
Hibernate實現(xiàn)CRUD操作
最近學(xué)習(xí)hibernate有幾天了,基本學(xué)會簡單的增刪改查,現(xiàn)在就把實現(xiàn)分享如下:
一: 首先需要建立數(shù)據(jù)庫,而我采用的mysql數(shù)據(jù)庫,為了更詳細(xì)hibernate的映射,我把數(shù)據(jù)庫表名和字段名與實體類的類名與屬性名取得不一致。
create table t_teacher(
id
int
auto_increment,
t_username varchar(
50
),
t_age
int
,
primary key(id)
);
二:建立數(shù)據(jù)源連接: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
>
<!--
Database connection settings
-->
<
property name
=
"
connection.driver_class
"
>
com.mysql.jdbc.Driver
</
property
>
<
property name
=
"
connection.url
"
>
jdbc:mysql:
//
localhost:3306/hxj</property>
<
property name
=
"
connection.username
"
>
root
</
property
>
<
property name
=
"
connection.password
"
>
root
</
property
>
<!--
JDBC connection pool (use the built
-
in)
-->
<!--
<
property name
=
"
connection.pool_size
"
>
1
</
property
>
-->
<!--
SQL dialect
-->
<
property name
=
"
dialect
"
>
org.hibernate.dialect.MySQLDialect
</
property
>
<!--
Enable Hibernate
'
s automatic session context management -->
<
property name
=
"
current_session_context_class
"
>
thread
</
property
>
<!--
Disable the second
-
level cache
-->
<
property name
=
"
cache.provider_class
"
>
org.hibernate.cache.NoCacheProvider
</
property
>
<!--
Echo all executed SQL to stdout
-->
<
property name
=
"
show_sql
"
>
true
</
property
>
<!--
Drop and re
-
create the database schema on startup
-->
<
property name
=
"
hbm2ddl.auto
"
>
update
</
property
>
<
mapping
class
=
"
com.wsw.hibernate.model.Teacher
"
/>
<!--
<
mapping resource
=
"
com/wsw/hibernate/model/Person.hbm.xml
"
/>-->
</
session
-
factory
>
</
hibernate
-
configuration
>
三:建立實體類:Teacher,由于我采用注解方式進行配置,所以需要再實體類上面加上注解。
package
com.wsw.hibernate.model;
import
java.io.Serializable;
import
javax.persistence.Column;
import
javax.persistence.Entity;
import
javax.persistence.GeneratedValue;
import
javax.persistence.Id;
import
javax.persistence.Table;
import
org.hibernate.annotations.GenericGenerator;
@Entity
@Table(name
=
"
t_teacher
"
)
public
class
Teacher
implements
Serializable
{
private
int
id;
private
String username;
private
int
age;
@Id
@GenericGenerator(name
=
"
generator
"
, strategy
=
"
increment
"
)
@GeneratedValue(generator
=
"
generator
"
)
@Column(name
=
"
id
"
)
public
int
getId()
{
return
id;
}
public
void
setId(
int
id)
{
this
.id
=
id;
}
@Column(name
=
"
t_username
"
)
public
String getUsername()
{
return
username;
}
public
void
setUsername(String username)
{
this
.username
=
username;
}
@Column(name
=
"
t_age
"
)
public
int
getAge()
{
return
age;
}
public
void
setAge(
int
age)
{
this
.age
=
age;
}
}
四:創(chuàng)建獲取SessionFactory的單例類:
package
com.wsw.hibernate.util;
import
org.hibernate.SessionFactory;
import
org.hibernate.cfg.AnnotationConfiguration;
import
org.hibernate.cfg.Configuration;
public
class
HibernateUtil
{
private
static
final
SessionFactory sessionFactory;
static
{
try
{
//
Create the SessionFactory from hibernate.cfg.xml
//
sessionFactory = new Configuration().configure().buildSessionFactory();
sessionFactory
=
new
AnnotationConfiguration().configure()
.buildSessionFactory();
}
catch
(Throwable ex)
{
//
Make sure you log the exception, as it might be swallowed
System.err.println(
"
Initial SessionFactory creation failed.
"
+
ex);
throw
new
ExceptionInInitializerError(ex);
}
}
public
static
SessionFactory getSessionFactory()
{
return
sessionFactory;
}
}
五:實現(xiàn)hibernate的CURD操作:
package
com.wsw.hibernate.action;
import
java.util.List;
import
org.hibernate.Query;
import
org.hibernate.Session;
import
org.hibernate.Transaction;
import
com.wsw.hibernate.model.Person;
import
com.wsw.hibernate.model.Teacher;
import
com.wsw.hibernate.util.HibernateUtil;
public
class
TeacherManager
{
public
static
void
main(String[] args)
{
//
selectTeacher_By_Load(1);
insertTeacher();
//
deleteTeacher();
selectAll();
//
updateTeacher();
//
insertTeacher();
//
createAndStoreTeacher();
//
select_All_By_Get(2);
//
select_AllPerson_By_Get();
//
annotation();
//
HibernateUtil.getSessionFactory().close();
}
/** */
/**
* 插入記錄
*/
private
static
void
insertTeacher()
{
Session session
=
HibernateUtil.getSessionFactory().getCurrentSession();
session.beginTransaction();
Teacher teacher
=
new
Teacher();
teacher.setUsername(
"
aaa
"
);
teacher.setAge(
25
);
session.save(teacher);
session.getTransaction().commit();
System.out.println(
"
insert teacher successfully
"
);
}
/** */
/**
* 刪除記錄操作
*/
private
static
void
deleteTeacher()
{
int
count;
Session session
=
HibernateUtil.getSessionFactory().getCurrentSession();
session.beginTransaction();
Query query
=
session.createQuery(
"
delete Teacher where id=?
"
);
query.setParameter(
0
,
1
);
count
=
query.executeUpdate();
//
刪除記錄采用Update方式
session.getTransaction().commit();
System.out.println(
"
刪除
"
+
count
+
"
條teacher記錄
"
);
}
/** */
/**
* 根據(jù)id采用load方式查詢
*
@param
id
*/
private
static
void
selectTeacher_By_Load(
int
id)
{
Session session
=
HibernateUtil.getSessionFactory().openSession();
//
load獲取值不能采用這種方式獲取session對象,因為load采用延遲加載/懶加載。而getCurrentSession()獲取session時會自動關(guān)閉session對象,
//
所以會導(dǎo)致對象沒有保存到內(nèi)存中,然后你使用該對象了,導(dǎo)致該:org.hibernate.LazyInitializationException異常。
//
Session session = HibernateUtil.getSessionFactory().getCurrentSession();
session.beginTransaction();
Teacher teacher
=
(Teacher)session.load(Teacher.
class
, id);
//
只能是主鍵id獲取對象值,不能以其他的表字段名獲取對象值,否則,只能用HQL語句查詢。
System.out.println(
"
load方式commit之前====>Id:
"
+
teacher.getId()
+
"
UserName:
"
+
teacher.getUsername()
+
"
Age:
"
+
teacher.getAge());
session.getTransaction().commit();
System.out.println(
"
load方式commit之后====》Id:
"
+
teacher.getId()
+
"
UserName:
"
+
teacher.getUsername()
+
"
Age:
"
+
teacher.getAge());
session.close();
//
load獲取值session方式需要手動關(guān)閉session對象,而通過getCurrentSession()則會自動關(guān)閉session對象
}
/** */
/**
* 根據(jù)id采用get方式查詢
*
@param
id
*/
private
static
void
selectTeacher_By_Get(
int
id)
{
Session session
=
HibernateUtil.getSessionFactory().getCurrentSession();
session.beginTransaction();
Teacher teacher
=
(Teacher)session.get(Teacher.
class
, id);
System.out.println(
"
get方式commit之前====>Id:
"
+
teacher.getId()
+
"
UserName:
"
+
teacher.getUsername()
+
"
Age:
"
+
teacher.getAge());
session.getTransaction().commit();
System.out.println(
"
get方式commit之后====>Id:
"
+
teacher.getId()
+
"
UserName:
"
+
teacher.getUsername()
+
"
Age:
"
+
teacher.getAge());
}
/** */
/**
* 按條件查詢記錄
*/
private
static
void
selectAll_By_Request()
{
Session session
=
HibernateUtil.getSessionFactory().getCurrentSession();
session.beginTransaction();
Query query
=
session.createQuery(
"
from Teacher where id=? and age=:tage
"
);
//
在條件語句中,可以用?和:兩種方式。兩者方式各有不同。
query.setParameter(
0
,
2
);
//
從0開始,而不是從1開始。采用?方式。
//
query.setInteger(0, 2);
//
上面的query.setParameter(0, 2)也可以用query.setInteger(0, 2)代替,效果一樣
query.setParameter(
"
tage
"
,
27
);
//
采用:方式。前面參數(shù)名與之前的:后面的參數(shù)名必須一致。
//
query.setInteger("tage", 27);
//
上面的query.setParameter("tage", 27)也可以用query.setInteger("tage", 27)代替,效果一樣
List
<
Teacher
>
listteacher
=
(List
<
Teacher
>
)query.list();
printList(listteacher);
}
/** */
/**
* 查詢?nèi)坑涗?br />
*/
private
static
void
selectAll()
{
Session session
=
HibernateUtil.getSessionFactory().getCurrentSession();
session.beginTransaction();
Query query
=
session.createQuery(
"
from Teacher
"
);
List
<
Teacher
>
listteacher
=
(List
<
Teacher
>
)query.list();
printList(listteacher);
}
/** */
/**
* 更新操作
*/
private
static
void
updateTeacher()
{
int
count;
Session session
=
HibernateUtil.getSessionFactory().getCurrentSession();
session.beginTransaction();
Query query
=
session.createQuery(
"
update Teacher set t_username='何小景' where id=?
"
);
query.setInteger(
0
,
2
);
count
=
query.executeUpdate();
session.getTransaction().commit();
System.out.println(
"
更新
"
+
count
+
"
條記錄
"
);
}
/** */
/**
* 打印List<Person>對象集合
*
@param
listteacher
*/
private
static
void
printList(List
<
Teacher
>
listteacher)
{
for
(Teacher teacher : listteacher)
{
System.out.println(
"
Id:
"
+
teacher.getId()
+
"
UserName:
"
+
teacher.getUsername()
+
"
Age:
"
+
teacher.getAge());
}
}
}
posted on 2012-06-30 10:29
奮斗成就男人
閱讀(2950)
評論(0)
編輯
收藏
新用戶注冊
刷新評論列表
只有注冊用戶
登錄
后才能發(fā)表評論。
網(wǎng)站導(dǎo)航:
博客園
IT新聞
Chat2DB
C++博客
博問
管理
Powered by:
BlogJava
Copyright © 奮斗成就男人
主站蜘蛛池模板:
库伦旗
|
松阳县
|
永善县
|
瓦房店市
|
阳山县
|
永定县
|
普兰县
|
罗城
|
商丘市
|
澄城县
|
宣武区
|
嘉兴市
|
长春市
|
桐柏县
|
钟祥市
|
永平县
|
榆中县
|
蒲城县
|
应城市
|
遂昌县
|
富川
|
璧山县
|
保康县
|
商都县
|
安西县
|
田东县
|
郯城县
|
长乐市
|
双柏县
|
奉贤区
|
福贡县
|
绥滨县
|
宁南县
|
高平市
|
福安市
|
大竹县
|
湟源县
|
宝坻区
|
云霄县
|
肥城市
|
嘉鱼县
|