【保存版】SQL ServerとHibernateでデータベース操作を極める!Mavenによる依存関係設定ステップ
Maven で SQL Server 用の依存関係を設定する方法
このチュートリアルでは、Maven プロジェクトで SQL Server と Hibernate を使用するために必要な依存関係を設定する方法を説明します。
必要なもの
- Maven がインストールされていること
- SQL Server インスタンス
- JDBC ドライバー
手順
-
JDBC ドライバーを入手する
Microsoft JDBC Driver for SQL Server をダウンロードします。ダウンロードした JAR ファイルは、プロジェクトのローカル Maven リポジトリに配置する必要があります。
mvn local:install-maven-artifact -DgroupId=com.microsoft -DartifactId=mssql-jdbc -Dversion=<version> -Dclassifier=jar
<version>
を JDBC ドライバーのバージョンに置き換えます。 -
pom.xml に依存関係を追加する
プロジェクトの pom.xml ファイルに次の依存関係を追加します。
<dependencies> <dependency> <groupId>com.microsoft</groupId> <artifactId>mssql-jdbc</artifactId> <version><version></version> </dependency> <dependency> <groupId>org.hibernate</groupId> <artifactId>hibernate-core</artifactId> <version><hibernate-version></version> </dependency> </dependencies>
<version>
を使用している JDBC ドライバーと Hibernate のバージョンに置き換えます。<hibernate-version>
は、使用する Hibernate のバージョンに置き換えます。 -
Hibernate の設定を追加する
hibernate.cfg.xml
ファイルに次の設定を追加します。<hibernate-configuration> <properties> <property name="hibernate.connection.driver_class">com.microsoft.sqlserver.jdbc.SQLServerDriver</property> <property name="hibernate.connection.url">jdbc:sqlserver://localhost:1433;databaseName=myDatabase</property> <property name="hibernate.connection.username">sa</property> <property name="hibernate.connection.password">myPassword</property> </properties> </hibernate-configuration>
上記の例では、
myDatabase
がデータベースの名前、sa
がユーザー名、myPassword
がパスワードに置き換えられます。
- 他のデータベースと接続する場合、対応する JDBC ドライバーと Hibernate 設定が必要になります。
例
以下の例は、Maven で SQL Server と Hibernate を使用する簡単なアプリケーションを示しています。
import javax.persistence.*;
@Entity
public class Person {
@Id
@GeneratedValue(strategy = GenerationType.IDENTITY)
private Long id;
private String name;
public Person() {
}
public Person(String name) {
this.name = name;
}
public Long getId() {
return id;
}
public void setId(Long id) {
this.id = id;
}
public String getName() {
return name;
}
public void setName(String name) {
this.name = name;
}
}
public class App {
public static void main(String[] args) {
EntityManagerFactory factory = Persistence.createEntityManagerFactory("myPU");
EntityManager em = factory.createEntityManager();
Person person = new Person("John Doe");
em.persist(person);
em.flush();
em.clear();
Person retrievedPerson = em.find(Person.class, 1L);
System.out.println(retrievedPerson.getName());
em.close();
factory.close();
}
}
<project xmlns="http://maven.apache.org/POM/4.0.0"
xsi:schemaLocation="http://maven.apache.org/POM/4.0.0 http://maven.apache.org/xsd/maven-4.0.0.xsd">
<modelVersion>4.0.0</modelVersion>
<groupId>com.example</groupId>
<artifactId>hibernate-sqlserver-example</artifactId>
<version>1.0-SNAPSHOT</version>
<properties>
<java.version>11</java.version>
<hibernate.version>6.1.7.Final</hibernate.version>
<sqlserver.version>9.3</sqlserver.version>
</properties>
<dependencies>
<dependency>
<groupId>org.hibernate</groupId>
<artifactId>hibernate-core</artifactId>
<version>${hibernate.version}</version>
</dependency>
<dependency>
<groupId>com.microsoft</groupId>
<artifactId>mssql-jdbc</artifactId>
<version>${sqlserver.version}</version>
</dependency>
</dependencies>
</project>
hibernate.cfg.xml
<hibernate-configuration>
<session-factory>
<property name="hibernate.connection.driver_class">com.microsoft.sqlserver.jdbc.SQLServerDriver</property>
<property name="hibernate.connection.url">jdbc:sqlserver://localhost:1433;databaseName=myDatabase</property>
<property name="hibernate.connection.username">sa</property>
<property name="hibernate.connection.password">myPassword</property>
<mapping class="com.example.entity.Person" />
</session-factory>
</hibernate-configuration>
Person.java
package com.example.entity;
import javax.persistence.*;
@Entity
public class Person {
@Id
@GeneratedValue(strategy = GenerationType.IDENTITY)
private Long id;
private String name;
public Person() {
}
public Person(String name) {
this.name = name;
}
public Long getId() {
return id;
}
public void setId(Long id) {
this.id = id;
}
public String getName() {
return name;
}
public void setName(String name) {
this.name = name;
}
}
App.java
package com.example;
import com.example.entity.Person;
import javax.persistence.EntityManager;
import javax.persistence.EntityManagerFactory;
import javax.persistence.Persistence;
public class App {
public static void main(String[] args) {
EntityManagerFactory factory = Persistence.createEntityManagerFactory("hibernate-sqlserver-example");
EntityManager em = factory.createEntityManager();
Person person = new Person("John Doe");
em.persist(person);
em.flush();
em.clear();
Person retrievedPerson = em.find(Person.class, 1L);
System.out.println(retrievedPerson.getName());
em.close();
factory.close();
}
}
説明
- pom.xml: このファイルは、Maven プロジェクトの設定を定義します。
hibernate.version
とsqlserver.version
プロパティは、使用する Hibernate と SQL Server のバージョンに置き換える必要があります。 - hibernate.cfg.xml: このファイルは、Hibernate の設定を定義します。
hibernate.connection.driver_class
、hibernate.connection.url
、hibernate.connection.username
、hibernate.connection.password
プロパティは、データベース接続情報に置き換える必要があります。 - Person.java: このファイルは、
Person
エンティティクラスを定義します。このクラスは、id
とname
という 2 つのフィールドを持つデータベーステーブルに対応しています。 - App.java: このファイルは、アプリケーションのメインクラスです。このクラスは、EntityManagerFactory と EntityManager を作成し、データベースにデータを保存して取得します。
実行方法
このコードを実行するには、次の手順を実行する必要があります。
- Maven プロジェクトを作成し
Maven BOM (Bill of Materials) を使用すると、プロジェクトで使用されるすべての依存関係のバージョンを管理できます。これは、依存関係の競合を回避し、プロジェクト全体で一貫したバージョンを使用するのに役立ちます。
SQL Server と Hibernate を使用する場合は、次の BOM を使用できます。
<dependencyManagement>
<dependencies>
<dependency>
<groupId>org.hibernate</groupId>
<artifactId>hibernate-bom</artifactId>
<version>${hibernate.version}</version>
<type>pom</type>
<scope>import</scope>
</dependency>
</dependencies>
</dependencyManagement>
この BOM を pom.xml ファイルに追加すると、Hibernate Core と関連するすべての依存関係が自動的にインポートされます。
長所:
- 依存関係のバージョンを簡単に管理できます。
- 依存関係の競合を回避できます。
- プロジェクト全体で一貫したバージョンを使用できます。
短所:
- BOM が複雑になる可能性があります。
- すべての依存関係が BOM に含まれているとは限りません。
Spring Boot を使用する
SQL Server と Hibernate を使用する場合は、Spring Boot プロジェクトを作成して、次の依存関係を追加できます。
<dependencies>
<dependency>
<groupId>org.springframework.boot</groupId>
<artifactId>spring-boot-starter-data-jpa</artifactId>
</dependency>
<dependency>
<groupId>com.microsoft</groupId>
<artifactId>mssql-jdbc</artifactId>
</dependency>
</dependencies>
Spring Boot は、データベース接続と Hibernate 設定を自動的に構成します。
- 開発が簡単です。
- データベース接続、トランザクション管理などの一般的なタスクを処理するための機能が組み込まれています。
- コードが簡潔になります。
- Spring Boot に慣れていない場合は、習得するのに時間がかかる場合があります。
- Spring Boot のすべての機能が必要ではない場合は、オーバーキルになる可能性があります。
手動で依存関係を追加する
- 完全な制御ができます。
- プロジェクトに必要な依存関係のみを追加できます。
- 依存関係のバージョンを管理する必要があります。
- 依存関係の競合が発生する可能性があります。
- コードが冗長になる可能性があります。
sql-server hibernate maven