JPA標準+HIBERNATE實現+SPINRG揉和
感覺這3個東東比較好,就查例子,及SPRING文檔做了以下配置。
類映射就用JPA的annotations好,本來transaction也應該用的,但后來發現aop+advise這種定義方式方便,就先用它,隨時可以改過來。這些定義都挺簡單,看一下SPRING的文檔就都清楚了,而且看最新文檔還有個好處,知道最新的寫法是什么。
將transaction定義在MANAGER上,DAO就注入到它里面。
還有一個暈的地方:
Persistence.xml這個文件就算不用也要定義,它是用來放映射的hbm.xml或者是被annotation的類名的,但我發現其實寫了也沒用,它好像會自動去搜索hbm.xml以及有annotations的類,自動加到EntityManager里。我只有把不用的hbm.xml刪除掉它才會不加。這一點相當奇怪,試了八百多次,也沒啥心思研究了,刪除了事。
<?xml version="1.0" encoding="UTF-8"?>
<beans xmlns="http://www.springframework.org/schema/beans"
xmlns:xsi="http://www.w3.org/2001/XMLSchema-instance"
xmlns:aop="http://www.springframework.org/schema/aop"
xmlns:tx="http://www.springframework.org/schema/tx"
xsi:schemaLocation="
http://www.springframework.org/schema/beans http://www.springframework.org/schema/beans/spring-beans-2.5.xsd
http://www.springframework.org/schema/tx http://www.springframework.org/schema/tx/spring-tx-2.5.xsd
http://www.springframework.org/schema/aop http://www.springframework.org/schema/aop/spring-aop-2.5.xsd">
<!-- Data Source Setup -->
<bean id="dataSource"
class="org.springframework.jdbc.datasource.DriverManagerDataSource">
<property name="driverClassName">
<value>com.mysql.jdbc.Driver</value>
</property>
<property name="url">
<value>jdbc:mysql://ebnms:3306/uu</value>
</property>
<property name="username">
<value>root</value>
</property>
<property name="password">
<value>78317</value>
</property>
</bean>
<bean id="entityManagerFactory"
class="org.springframework.orm.jpa.LocalContainerEntityManagerFactoryBean">
<property name="dataSource" ref="dataSource" />
<property name="persistenceUnitName" value="ebnms"/>
<!--property name="loadTimeWeaver">
<bean class="org.springframework.instrument.classloading.InstrumentationLoadTimeWeaver" />
</property-->
<property name="jpaVendorAdapter">
<bean
class="org.springframework.orm.jpa.vendor.HibernateJpaVendorAdapter">
<property name="database" value="MYSQL" />
<property name="showSql" value="true" />
</bean>
</property>
</bean>
<bean id="txManager"
class="org.springframework.orm.jpa.JpaTransactionManager">
<property name="entityManagerFactory"
ref="entityManagerFactory" />
</bean>
<!--tx:annotation-driven transaction-manager="txManager" /-->
<bean
class="org.springframework.orm.jpa.support.PersistenceAnnotationBeanPostProcessor" />
<bean id="monitorDao"
class="com.exchangebit.nms.model.test.MonitorJpaDao">
<property name="entityManagerFactory"
ref="entityManagerFactory" />
</bean>
<bean id="monitorManager"
class="com.exchangebit.nms.model.test.MonitorManager">
<property name="monitorDao" ref="monitorDao" />
</bean>
<aop:config>
<aop:pointcut id="monitorDaoMethods"
expression="execution(* com.exchangebit.nms.model.test.MonitorManager.*(..))" />
<aop:advisor advice-ref="txAdvice"
pointcut-ref="monitorDaoMethods" />
</aop:config>
<tx:advice id="txAdvice" transaction-manager="txManager">
<tx:attributes>
<tx:method name="save*" propagation="REQUIRED" />
</tx:attributes>
</tx:advice>
</beans>
Persistence.xml內容:
<persistence xmlns="http://java.sun.com/xml/ns/persistence"
xmlns:xsi="http://www.w3.org/2001/XMLSchema-instance"
xsi:schemaLocation="http://java.sun.com/xml/ns/persistence http://java.sun.com/xml/ns/persistence/persistence_1_0.xsd"
version="1.0">
<persistence-unit name="ebnms" transaction-type="RESOURCE_LOCAL">
<!--provider>org.hibernate.ejb.HibernatePersistence</provider-->
<class>
com.exchangebit.nms.model.test.Monitor
</class>
</persistence-unit>
</persistence>
DAO代碼很簡單,從JpaDaoSupport派生類來處理,看不見transactions的那些代碼,全部在SPRING的定義里放到manager里去了:
publicclass JpaGenericDAO extends JpaDaoSupport {
protectedfinal Logger logger = LoggerFactory.getLogger(getClass());
publicvoid create(T entity) {
Assert.notNull(entity);
logger.info("saving {} instance", className);
getJpaTemplate().persist(entity);
logger.info("save successful");
}
}
搭建MAVEN2的內網服務器:設置一個目錄在WEB服務上可以訪問
在/etc/apache2/conf.d下新建配置文件,內容如下:
Alias /maven2 /maven2
<Directory /maven2>
Options +FollowSymLinks Indexes
AllowOverride None
order allow,deny
allow from all
</Directory>
這里關鍵是Indexes選項表示可以列出目錄。
另外,把httpd的運行用戶加入這個目錄的owner所在的一個組,并且組的讀屬性是開的。
設置服務器地址:
在C:"WINDOWS"system32"drivers"etc"hosts文件加入ebnms指向內網服務器,然后將第一項repo指向它:
<repository>
<id>artifactory</id>
<name>artifactory at my server</name>
<url>http://ebnms/maven2</url>
<snapshots>
<enabled>true</enabled>
<updatePolicy>never</updatePolicy>
</snapshots>
</repository>
MYSQL可以被外部機器連接
修改CONFIG文件為綁定全網端口:
bind-address = 0.0.0.0
本機通過ROOT連接上后,執行命令給權限:
GRANT ALL PRIVILEGES ON *.* TO root@192.168.1.99 IDENTIFIED BY '78317';
試登陸:
mysql -u root -h 192.168.1.17 –p
修改密碼:
SET PASSWORD FOR root@'172.19.149.52' = PASSWORD('78317');
cannot connect to VM錯誤
左提示右提示就是這個錯,找了半天是Kaspersky防火墻的問題,其實一早我就懷疑是它,但只是停用了試了下,錯誤依舊,后來試了一天又試回來,發現要把防火墻的過濾級別設置成最低就可以了通了,暈啊暈,還讓我懷疑是不是JAR沖突。
posted on 2008-01-28 23:08
我愛佳娃 閱讀(6417)
評論(1) 編輯 收藏 所屬分類:
服務配置 、
Spring 、
maven