Java Votary
BlogJava
::
首頁(yè)
::
新隨筆
::
聯(lián)系
::
聚合
::
管理
::
48 隨筆 :: 1 文章 :: 80 評(píng)論 :: 0 Trackbacks
<
2005年12月
>
日
一
二
三
四
五
六
27
28
29
30
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
31
1
2
3
4
5
6
7
常用鏈接
我的隨筆
我的評(píng)論
我的參與
最新評(píng)論
留言簿
(7)
給我留言
查看公開(kāi)留言
查看私人留言
隨筆分類(lèi)
Ajax(7)
(rss)
ASP模式(3)
(rss)
Java(17)
(rss)
Javascript(2)
(rss)
Ruby
(rss)
Rule Engine(6)
(rss)
SOA(2)
(rss)
Springframework(4)
(rss)
Web Service
(rss)
Web服務(wù)器(1)
(rss)
企業(yè)架構(gòu)模式(2)
(rss)
雜項(xiàng)(2)
(rss)
設(shè)計(jì)模式
(rss)
隨筆檔案
2009年7月 (1)
2006年3月 (6)
2006年1月 (2)
2005年12月 (22)
2005年11月 (17)
文章檔案
2005年11月 (1)
搜索
最新評(píng)論
1.?re: Java Annotation入門(mén)
真心垃圾! 概念沒(méi)講清楚就開(kāi)始講解如何使用,這哪兒是入門(mén)? 這是浪費(fèi)大家時(shí)間。
--路人甲
2.?re: Java Annotation入門(mén)
不錯(cuò)
--bozhang
3.?re: Java Annotation入門(mén)
這看完了能入門(mén)?運(yùn)行原理都不說(shuō)下
--DFX
4.?re: Java Annotation入門(mén)[未登錄](méi)
翻譯的不錯(cuò)
--a
5.?re: Java Annotation入門(mén)
@c
翻譯的太爛
--Somebodi
閱讀排行榜
1.?Java Annotation入門(mén)(58798)
2.?【轉(zhuǎn)載】關(guān)于Java文件路徑問(wèn)題(31504)
3.?什么是Portlet ?(10056)
4.?[收藏]如何獲取客戶端MAC地址(9761)
5.?解決JAVA服務(wù)器性能問(wèn)題(5782)
評(píng)論排行榜
1.?Java Annotation入門(mén)(39)
2.?[轉(zhuǎn)]我的Java學(xué)習(xí)之路(8)
3.?【轉(zhuǎn)載】關(guān)于Java文件路徑問(wèn)題(8)
4.?什么是Portlet ?(5)
5.?在Java2平臺(tái)企業(yè)版中應(yīng)用異步JavaScript技術(shù)和XML(AJAX)(4)
【轉(zhuǎn)載】hibernate3.0+ejb3 annotaion配置實(shí)戰(zhàn)+spring1.21 annotation事務(wù)控制
hibernate3.0+ejb3 annotaion配置實(shí)戰(zhàn)+spring1.21 annotation事務(wù)控制
我是比較討厭xml的人,沒(méi)有強(qiáng)類(lèi)型,很多配置出錯(cuò),包括xdoclet都無(wú)法檢查。剛好現(xiàn)在的主流框架總算開(kāi)始支持annotation了,所以玩了一下配置,供參考:
hibernate3.05
hibernate-annotations-3.0beta2
spring1.21
幾個(gè)配置文件如下:
spring-database.xml(這個(gè)文件基本不變,有新的dao在底下加入一行即可。
<?
xml version="1.0" encoding="UTF-8"
?>
<!
DOCTYPE beans PUBLIC "-//SPRING//DTD BEAN//EN" "http://www.springframework.org/dtd/spring-beans.dtd"
>
<
beans
>
<!--
========================= RESOURCE DEFINITIONS =========================
-->
<
bean
id
="dataSource"
class
="org.apache.commons.dbcp.BasicDataSource"
destroy-method
="close"
>
<
property
name
="driverClassName"
><
value
>
${jdbc.driverClassName}
</
value
></
property
>
<
property
name
="url"
><
value
>
${jdbc.url}
</
value
></
property
>
<
property
name
="username"
><
value
>
${jdbc.username}
</
value
></
property
>
<
property
name
="password"
><
value
>
${jdbc.password}
</
value
></
property
>
</
bean
>
<
bean
id
="sessionFactory"
class
="org.springframework.orm.hibernate3.LocalSessionFactoryBean"
>
<
property
name
="configurationClass"
><
value
>
org.hibernate.cfg.AnnotationConfiguration
</
value
></
property
>
<
property
name
="dataSource"
><
ref
bean
="dataSource"
/></
property
>
<
property
name
="configLocation"
><
value
>
/hibernate.cfg.xml
</
value
></
property
>
</
bean
>
<
bean
id
="transactionManager"
class
="org.springframework.orm.hibernate3.HibernateTransactionManager"
>
<
property
name
="sessionFactory"
><
ref
bean
="sessionFactory"
/></
property
>
<
property
name
="dataSource"
><
ref
bean
="dataSource"
/></
property
>
</
bean
>
<
bean
class
="org.springframework.aop.framework.autoproxy.DefaultAdvisorAutoProxyCreator"
/>
<
bean
class
="org.springframework.transaction.interceptor.TransactionAttributeSourceAdvisor"
>
<
property
name
="transactionInterceptor"
><
ref
bean
="transactionInterceptor"
/></
property
>
</
bean
>
<
bean
id
="transactionInterceptor"
class
="org.springframework.transaction.interceptor.TransactionInterceptor"
>
<
property
name
="transactionManager"
><
ref
bean
="transactionManager"
/></
property
>
<
property
name
="transactionAttributeSource"
>
<
bean
class
="org.springframework.transaction.annotation.AnnotationTransactionAttributeSource"
/>
</
property
>
</
bean
>
<!--
========================= DAO DEFINITIONS =========================
-->
<
bean
id
="testDao"
class
="org.steeven.TestDaoImpl"
>
<
property
name
="sessionFactory"
>
<
ref
bean
="sessionFactory"
/>
</
property
>
</
bean
>
<!--
========================= DAO DEFINITIONS =========================
-->
<bean id="mitService" class="org.steeven.TestServiceImpl"></bean>
</
beans
>
hibernate.cfg.xml
<?
xml version="1.0" encoding="UTF-8"
?>
<!
DOCTYPE hibernate-configuration PUBLIC
"-//Hibernate/Hibernate Configuration DTD 3.0//EN"
"http://hibernate.sourceforge.net/hibernate-configuration-3.0.dtd"
>
<
hibernate-configuration
>
<
session-factory
>
<
property
name
="hibernate.hbm2ddl.auto"
>
create-drop
</
property
>
<
property
name
="hibernate.dialect"
>
org.hibernate.dialect.MySQLDialect
</
property
>
<
property
name
="hibernate.cglib.use_reflection_optimizer"
>
true
</
property
>
<
property
name
="default-lazy"
>
false
</
property
>
<!--
用于hibernate持久化的對(duì)象"
-->
<
mapping
class
="org.steeven.Test"
/>
<
listener
type
="pre-update"
class
="org.hibernate.validator.event.ValidatePreUpdateEventListener"
/>
<
listener
type
="pre-insert"
class
="org.hibernate.validator.event.ValidatePreInsertEventListener"
/>
</
session-factory
>
</
hibernate-configuration
>
上面兩個(gè)就是配置文件的全部了。下面看看代碼:
TestDao.java(注意,就是個(gè)普通的dao,事務(wù)控制由調(diào)用者標(biāo)注)
public
class
TestDaoImpl extends HibernateDaoSupport implements TestDao
{
public
void
save(Test
data)
{
getHibernateTemplate().saveOrUpdateAll(Arrays.asList(data));
}
}
Test.java
@Entity
@Proxy(lazy
=
false
)
public
class
Test
{
int
id;
String name;
Map
<
String, String
>
properties;
@Column(length
=
100
)
public
String getName()
{
return
name;
}
public
void
setName(String name)
{
this
.name
=
name;
}
@Id(generate
=
GeneratorType.AUTO)
public
int
getId()
{
return
id;
}
public
void
setId(
int
id)
{
this
.id
=
id;
}
@Transient
public
String getNotStoredProp()
{
return
null
;
}
@Type(type
=
"
org.steeven.database.MapUserType
"
)
@Column(name
=
"
properties
"
, length
=
1000
)
//
Map暫時(shí)不被支持,自己持久化到一個(gè)大字段
public
Map
<
String, String
>
getProperties()
{
return
properties;
}
public
void
setProperties(Map
<
String, String
>
properties)
{
this
.properties
=
properties;
}
}
TestServiceImpl.java(這個(gè)類(lèi)也是從spring中取得,關(guān)鍵就在@Transactional標(biāo)記)
@Transactional
public
class
TestServiceImpl implements TestService
{
public
void
save(Test
data)
{
TestDao dao
=
(TestDao)ServiceLocator.getInstance().getBean(
"
testDao
"
);
dao.save(data[
0
]);
if
(
true
)
throw
new
RuntimeException();
//
看看數(shù)據(jù)庫(kù)是不是什么都沒(méi)有?!
dao.save(data[
1
]);
}
}
現(xiàn)在很清爽了,所有的事務(wù)控制只需要加幾個(gè)@Transaction標(biāo)記。感謝hibernate+spring
另外,hibernate還提供了基于標(biāo)記的參數(shù)校驗(yàn),請(qǐng)參考下面文檔:
參考資源:
spring1.21自帶smaples/jpetstore
http://www.hibernate.org/hib_docs/annotations/reference/en/html_single/
posted on 2005-12-13 23:32
Dion
閱讀(2260)
評(píng)論(2)
編輯
收藏
所屬分類(lèi):
Springframework
評(píng)論
#
re: 【轉(zhuǎn)載】hibernate3.0+ejb3 annotaion配置實(shí)戰(zhàn)+spring1.21 annotation事務(wù)控制
2005-12-16 18:17
jess
safd
回復(fù)
更多評(píng)論
#
re: 【轉(zhuǎn)載】hibernate3.0+ejb3 annotaion配置實(shí)戰(zhàn)+spring1.21 annotation事務(wù)控制
2006-08-14 13:20
westzq
我照著你的寫(xiě)了個(gè)為什么不能實(shí)現(xiàn)事務(wù)?
hibernate.cfg.xml中的
<listener type="pre-update" class="org.hibernate.validator.event.ValidatePreUpdateEventListener"/>
<listener type="pre-insert" class="org.hibernate.validator.event.ValidatePreInsertEventListener"/>
需要什么特殊配置嗎?
回復(fù)
更多評(píng)論
新用戶注冊(cè)
刷新評(píng)論列表
只有注冊(cè)用戶
登錄
后才能發(fā)表評(píng)論。
網(wǎng)站導(dǎo)航:
博客園
IT新聞
Chat2DB
C++博客
博問(wèn)
管理
相關(guān)文章:
在SPRING中實(shí)現(xiàn)事務(wù)暫停
【轉(zhuǎn)載】Spring中使用Annotation同時(shí)標(biāo)記JMS+數(shù)據(jù)庫(kù)事務(wù)
【轉(zhuǎn)載】hibernate3.0+ejb3 annotaion配置實(shí)戰(zhàn)+spring1.21 annotation事務(wù)控制
擴(kuò)展 Spring 的 JMX 支持
Powered by:
BlogJava
Copyright © Dion
主站蜘蛛池模板:
无码人妻丰满熟妇区免费
|
国产精品亚洲片夜色在线
|
亚洲人成网亚洲欧洲无码久久
|
亚洲啪啪免费视频
|
亚洲美女aⅴ久久久91
|
久久久久久久亚洲Av无码
|
亚洲一区二区在线免费观看
|
亚洲a在线视频视频
|
伊人久久综在合线亚洲2019
|
中文字幕亚洲色图
|
亚洲精品美女在线观看
|
亚洲人色大成年网站在线观看
|
亚洲免费视频观看
|
亚洲色大成网站www久久九
|
久久亚洲中文无码咪咪爱
|
理论亚洲区美一区二区三区
|
国产午夜亚洲精品不卡电影
|
日本精品久久久久久久久免费
|
又硬又粗又长又爽免费看
|
成人片黄网站色大片免费观看cn
|
亚洲欧洲专线一区
|
亚洲AV性色在线观看
|
国产成人综合亚洲
|
一级一级一片免费高清
|
亚洲丶国产丶欧美一区二区三区
|
色偷偷亚洲男人天堂
|
一级特黄a免费大片
|
免费精品一区二区三区第35
|
男人扒开添女人下部免费视频
|
亚洲一区二区三区免费
|
久久免费观看国产99精品
|
国产成人福利免费视频
|
日韩电影免费在线观看视频
|
久草免费在线观看视频
|
永久免费观看的毛片的网站
|
亚洲男人天堂2020
|
久久丫精品国产亚洲av
|
亚洲中文字幕无码av
|
xvideos永久免费入口
|
24小时日本电影免费看
|
国产无遮挡吃胸膜奶免费看
|