[url]http://db.apache.org/derby/derby_downloads.html[/url]
2.設置環境變量
用戶環境
名字:DERBY_HOME
值:F:\100-programs\db-derby-10.8.3.0-bin
系統環境
在Path加入:%DERBY_HOME%\bin
3.行網絡模式的Derby數據庫
這種模式下,需要使用兩個控制檯窗口,一個用於啓動Derby數據庫服務端,另一個做爲訪問Derby數據庫的客戶端。
啓動Derby數據庫服務端:
F:\100-programs\db-derby-10.8.3.0-bin\bin>[b]startNetworkServer[/b]
數據庫就啓動了,啓動成功會在控制檯輸出如下信息:
Security manager installed using the Basic server security policy. Apache Derby Network Server - 10.4.1.3 - (648739) started and ready to accept connections on port 1527 at 2008-04-28 17:13:13.921 GMT
如果碰到Runtimeexception,可以試下10.8.3.0以下的版本
關閉Derby數據庫服務端:
F:\100-programs\db-derby-10.8.3.0-bin\bin>[b]stopNetworkServer[/b]
4.在另一個控制檯使用ij命令訪問Derby數據庫服務端
使用ij工具來進行數據庫交互,執行SQL腳本,如查詢、增刪改、創建表等等。
F:\100-programs\db-derby-10.8.3.0-bin\bin>[b]ij[/b]
ij version 10.8.3.0
ij>
創建一個數據庫:
ij>connect 'jdbc:derby://localhost:1527/myderbydb;user=APP;password=APP;create=true';
如果碰到ERROR XJ041: Failed to create database,可以試下10.10.1.1版本
連接數據庫:
ij>connect 'jdbc:derby//localhost:1527/myderbydb;user=APP;password=APP';
退出連接>
ij>disconnect;
退出ij
ij>exit;
5.Spring配置
<bean id="dataSourceDerby" class="com.atomikos.jdbc.AtomikosDataSourceBean"
init-method="init" destroy-method="close">
<description>derby xa datasource</description>
<property name="uniqueResourceName">
<value>jdbc/DerbyDB</value>
</property>
<property name="xaDataSourceClassName">
<value>org.apache.derby.jdbc.ClientXADataSource</value>
</property>
<property name="xaProperties">
<props>
<prop key="user">APP</prop>
<prop key="password">APP</prop>
<prop key="serverName">localhost</prop>
<prop key="portNumber">1527</prop>
<prop key="databaseName">myderbydb</prop>
</props>
</property>
</bean>
<bean id="emfDerby"
class="org.springframework.orm.jpa.LocalContainerEntityManagerFactoryBean">
<!-- <property name="loadTimeWeaver"> <bean class="org.springframework.instrument.classloading.InstrumentationLoadTimeWeaver"
/> </property> -->
<property name="persistenceUnitName" value="derby" />
<property name="dataSource" ref="dataSourceDerby" />
<property name="jpaProperties">
<props>
<prop key="hibernate.transaction.factory_class">org.hibernate.transaction.JTATransactionFactory
</prop>
<prop key="hibernate.transaction.manager_lookup_class">com.atomikos.icatch.jta.hibernate3.TransactionManagerLookup
</prop>
<prop key="hibernate.dialect">org.hibernate.dialect.Oracle10gDialect</prop>
<prop key="hibernate.show_sql">${orm.showsql}</prop>
<prop key="hibernate.transaction.manager_lookup_class">com.atomikos.icatch.jta.hibernate3.TransactionManagerLookup
</prop>
<prop key="hibernate.transaction.factory_class">com.atomikos.icatch.jta.hibernate3.AtomikosJTATransactionFactory
</prop>
<prop key="hibernate.transaction.factory_class">org.hibernate.ejb.transaction.JoinableCMTTransactionFactory
</prop>
<prop key="hibernate.ejb.event.post-insert">org.hibernate.ejb.event.EJB3PostInsertEventListener
</prop>
<prop key="hibernate.ejb.event.post-update">org.hibernate.ejb.event.EJB3PostUpdateEventListener
</prop>
<prop key="hibernate.ejb.event.post-delete">org.hibernate.ejb.event.EJB3PostDeleteEventListener
</prop>
<!-- <prop key="hibernate.current_session_context_class">org.hibernate.context.ThreadLocalSessionContext -->
<!-- </prop> -->
<prop key="hibernate.current_session_context_class">org.hibernate.context.JTASessionContext
</prop>
</props>
</property>
</bean>
6.JTA配置
<persistence-unit name="derby" transaction-type="JTA">
<provider>org.hibernate.ejb.HibernatePersistence</provider>
<jta-data-source>jdbc/DerbyDB</jta-data-source>
<!-- class definitions here, nothing else -->
<class>myderbydb.bom.Timerjob</class>
<properties>
<property name="hibernate.default_schema" value="app" />
</properties>
</persistence-unit>
7.Maven配置
<dependency>
<groupId>org.apache.derby</groupId>
<artifactId>derbyclient</artifactId>
<version>10.8.3.0</version>
</dependency>
7. DAO
public class TimerjobDAO {
import javax.persistence.EntityManager;
private EntityManager entityManager;
@PersistenceContext(unitName = "derby")
public void setEntityManger(final EntityManager entityManager) {
this.entityManager = entityManager;
}
}
8.Eclipse External Tools 配置啓動Derby服務器端
<?xml version="1.0" encoding="UTF-8" standalone="no"?>
<launchConfiguration type="org.eclipse.ui.externaltools.ProgramLaunchConfigurationType">
<stringAttribute key="org.eclipse.ui.externaltools.ATTR_LOCATION" value="F:\100-programs\db-derby-10.8.3.0-bin\bin\startNetworkServer.bat"/>
<stringAttribute key="org.eclipse.ui.externaltools.ATTR_WORKING_DIRECTORY" value="F:\100-programs\db-derby-10.8.3.0-bin\data"/>
</launchConfiguration>
9.Unix
9.1 下載db-derby-10.8.3.0-bin.tar.gz
9.2 解壓
tar xzvf db-derby-10.8.3.0-bin.tar.gz
9.3 編寫腳本derby,設置環境變量,啓動Derby服務器端
由於關掉Putty, Derby Server 會自動關閉,所以要將derby腳本建立在 /etc/init.d下面
Path: /etc/init.d/derby
sudo /etc/init.d/derby start
#!/bin/bash
#
# Startup script for Derby
HOME=/home/smartbus
export JAVA_HOME=$HOME/programs/java-7
export DERBY_HOME=$HOME/programs/db-derby-10.8.3.0-bin
export PATH=$PATH:$DERBY_HOME/bin
export DERBY_INSTALL=$DERBY_HOME
export CLASSPATH=$CLASSPATH:$DERBY_INSTALL/lib/derbytools.jar:$DERBY_INSTALL/lib/derbynet.jar
DBDIR=$HOME/programs/db-derby-10.8.3.0-bin/bin
start() {
echo "DERBY instance is already running"
cd $DBDIR
nohup setNetworkServerCP
nohup startNetworkServer
}
stop() {
echo "DERBY instance is already stopping"
cd $DBDIR
stopNetworkServer
}
restart() {
stop
start
}
case "$1" in
start)
start
;;
stop)
stop
;;
restart)
restart
;;
*)
echo "Usage: $0 {start|stop|restart}"
exit 1
;;
esac
exit $?
9.4 另一個控制檯使用ij命令訪問Derby數據庫服務端
export DERBY_HOME=/home/smartbus/programs/db-derby-10.8.3.0-bin
export PATH=$PATH:$DERBY_HOME/bin
export JAVA_HOME=/home/smartbus/grams/java-7
cd $DERBY_HOME/bin
ij
10. derby.properties
derby.drda.host=0.0.0.0 修改主機IP地址,由此運行所有Client連接此Server