LoginSignup
8
9

More than 5 years have passed since last update.

Spring(MVC) + HibernateでOracle DBに接続

Last updated at Posted at 2016-07-18

ojdbcのインストール

mavenリポジトリにOracle用JDBCドライバ最新版がないのでojdbcをダウンロードして手動でmavenのローカルリポジトリにインストールする。

image

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環境変数を設定しているとそっちのパスにできる

image

Eclipseの設定

まずは、上記でインストールしたojdbcをpom.xmlに追加

image

今回はHibernateでOracleに接続する。
以下のライブラリをpom.xmlに追加。
・hibernate-entitymanager
・hibernate-core
・spring-core
・spring-jdbc
・spring-orm
※JdbcTemplateで接続とかも試していたので不要なのもあるかも。。

image

src/main/resources にMETA_INFフォルダを作成しそこにpersistence.xmlを作成
※今回はJPA2.1を使用するように設定

persistence.xml
<?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クラスの作成

NameT.java
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アクセス

xxx.java
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;
}

でアクセス可能

8
9
0

Register as a new user and use Qiita more conveniently

  1. You get articles that match your needs
  2. You can efficiently read back useful information
  3. You can use dark theme
What you can do with signing up
8
9