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)(58797)
2.?【轉(zhuǎn)載】關(guān)于Java文件路徑問(wèn)題(31503)
3.?什么是Portlet ?(10055)
4.?[收藏]如何獲取客戶(hù)端MAC地址(9761)
5.?解決JAVA服務(wù)器性能問(wèn)題(5780)
評(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)論
新用戶(hù)注冊(cè)
刷新評(píng)論列表
只有注冊(cè)用戶(hù)
登錄
后才能發(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
主站蜘蛛池模板:
青柠影视在线观看免费高清
|
亚洲欧美日韩中文二区
|
99精品免费观看
|
亚洲不卡中文字幕无码
|
国产精品视频全国免费观看
|
亚洲午夜精品一级在线播放放
|
rh男男车车的车车免费网站
|
亚洲午夜无码久久久久
|
波多野结衣免费一区视频
|
国产v亚洲v天堂无码网站
|
一区二区三区观看免费中文视频在线播放
|
免费能直接在线观看黄的视频
|
精品久久久久久亚洲
|
中国一级毛片免费看视频
|
区三区激情福利综合中文字幕在线一区亚洲视频1
|
免费夜色污私人影院网站
|
免费一级毛片女人图片
|
一道本在线免费视频
|
久久精品国产精品亚洲色婷婷
|
xxxx日本免费
|
欧美亚洲国产SUV
|
日韩亚洲变态另类中文
|
日韩精品人妻系列无码专区免费
|
亚洲精品不卡视频
|
国产成人高清精品免费软件
|
青青青国产免费一夜七次郎
|
特级一级毛片免费看
|
亚洲一区二区三区自拍公司
|
91精品国产免费久久国语蜜臀
|
99999久久久久久亚洲
|
好吊妞在线新免费视频
|
日韩亚洲人成在线综合
|
久久精品国产精品亚洲艾草网美妙
|
久久er国产精品免费观看8
|
亚洲AV无码1区2区久久
|
毛片网站免费在线观看
|
在线观看免费视频网站色
|
亚洲中文字幕无码一去台湾
|
久久久久一级精品亚洲国产成人综合AV区
|
一个人免费日韩不卡视频
|
美女被吸屁股免费网站
|