ojdbcのインストール
mavenリポジトリにOracle用JDBCドライバ最新版がないのでojdbcをダウンロードして手動でmavenのローカルリポジトリにインストールする。
Oracleのサイトからojdbc6.jarをダウンロード
(今回はOracle XE 11gと接続するのでこれを使用)
ojdbc6.jarがあるところまでcdして以下を実行
> mvn install:install-file -Dfile=ojdbc6.jar -DgroupId=com.oracle -DartifactId=ojdbc6 -Dversion=11.1.0.7.0 -Dpackaging=jar
無事インストール完了すると
C:\Users\(ユーザ名)\.m2\repository\com\oracle\ojdbc6\11.1.0.7.0
ができてその中にojdbc6関連のファイルが出来上がる
※M2_REPO環境変数を設定しているとそっちのパスにできる
Eclipseの設定
まずは、上記でインストールしたojdbcをpom.xmlに追加
今回はHibernateでOracleに接続する。
以下のライブラリをpom.xmlに追加。
・hibernate-entitymanager
・hibernate-core
・spring-core
・spring-jdbc
・spring-orm
※JdbcTemplateで接続とかも試していたので不要なのもあるかも。。
src/main/resources にMETA_INFフォルダを作成しそこにpersistence.xmlを作成
※今回はJPA2.1を使用するように設定
<?xml version="1.0" encoding="UTF-8"?>
<persistence xmlns="http://xmlns.jcp.org/xml/ns/persistence"
xmlns:xsi="http://www.w3.org/2001/XMLSchema-instance"
xmlns:context="http://www.springframework.org/schema/context"
xsi:schemaLocation="http://xmlns.jcp.org/xml/ns/persistence http://xmlns.jcp.org/xml/ns/persistence/persistence_2_1.xsd"
version="2.1">
<persistence-unit name="jpa.sample">
<description>test</description>
<class>jp.test.spring.entity.*</class>
<properties>
<property name="javax.persistence.jdbc.driver" value="oracle.jdbc.driver.OracleDriver" />
<property name="javax.persistence.jdbc.url" value="jdbc:oracle:thin:@localhost:1521/xe" />
<property name="javax.persistence.jdbc.user" value="scott" />
<property name="javax.persistence.jdbc.password" value="tigger" />
<property name="hibernate.show_sql" value="true" />
</properties>
</persistence-unit>
</persistence>
※<class>タグにはEntityクラスを置くパッケージを指定する。
Entityクラスの作成
package jp.test.spring.entity;
import java.io.Serializable;
import javax.persistence.Column;
import javax.persistence.Entity;
import javax.persistence.Id;
import javax.persistence.NamedQueries;
import javax.persistence.NamedQuery;
import javax.persistence.Table;
@NamedQueries(
@NamedQuery(name="NameT.findAll", query="select n from NameT n")
)
@Entity
@Table(name = "NAMET")
public class NameT implements Serializable {
@Id
@Column(nullable = false)
private int id;
@Column()
private String name;
// getter,setter省略
}
EntityManagerでDBアクセス
public List<NameT> getJpa() {
EntityManagerFactory emf = Persistence.createEntityManagerFactory("jpa.sample");
EntityManager em = emf.createEntityManager();
List<NameT> nameTList = em.createNamedQuery("NameT.findAll", NameT.class).getResultList();
for (NameT nameT : nameTList) {
logger.info("id: " + nameT.getId() + " / name: " + nameT.getName());
}
em.close();
emf.close();
return nameTList;
}
でアクセス可能