“`html
Hibernate CRUD μμ λ§μ€ν°νκΈ°: Read κΈ°λ₯μ λν μ’ ν© κ°μ΄λ
λͺ©μ°¨
- μκ°
- Hibernateλ?
- CRUD μμ μ μ€μμ±
- Read μμ μ λν μ§μ€
- CRUDλ₯Ό μν Hibernate μ¬μ©μ μ₯λ¨μ
- Hibernate Read μμ μ μ¬μ©ν μκΈ°μ μ₯μ
- CRUD μμ
μ μν Hibernate μ€μ
- νμ 쑰건
- νλ‘μ νΈ κ΅¬μ‘° κ°μ
- hibernate.cfg.xml μ€μ
- μν°ν° ν΄λμ€ μ΄ν΄νκΈ°
- Users μν°ν° μμ±
- μμ±μ, Getters λ° Setters
- toString λ©μλ μ€λ²λΌμ΄λ
- Read μμ
ꡬν
- Hibernate μΈμ μ΄κΈ°ν
- νΈλμμ μμ
- session.getμ μ¬μ©ν λ°μ΄ν° κ²μ
- νΈλμμ 컀λ°
- κ²μλ λ°μ΄ν° νμ
- μ½λ μ€λͺ
- μμ ν Java μ½λ
- λ¨κ³λ³ μ€λͺ
- μΆλ ₯ λΆμ
- κ²°λ‘
- ν΅μ¬ λ΄μ©
- λ€μ λ¨κ³: μΆκ° CRUD μμ νμ
- μΆκ° μλ£
μκ°
1.1 Hibernateλ?
Hibernateλ Java μ ν리μΌμ΄μ μ μν κ°λ ₯ν κ°μ²΄-κ΄κ³ 맀ν(Object-Relational Mapping, ORM) νλ μμν¬μ λλ€. Hibernateλ Java ν΄λμ€λ₯Ό λ°μ΄ν°λ² μ΄μ€ ν μ΄λΈμ 맀ννμ¬ κ°λ°μκ° λ³΅μ‘ν SQL 쿼리λ₯Ό μμ±νλ λμ Java κ°μ²΄λ₯Ό μ¬μ©νμ¬ λ°μ΄ν°λ² μ΄μ€μ μνΈ μμ©ν μ μλλ‘ ν©λλ€. μ΄λ¬ν μΆμνλ λ°μ΄ν°λ² μ΄μ€ μμ μ λ¨μννκ³ μμ°μ±μ ν₯μμν΅λλ€.
1.2 CRUD μμ μ μ€μμ±
CRUDλ Create, Read, Update, Deleteμ μ½μλ‘, μꡬ μ μ₯μμμ λ°μ΄ν°λ₯Ό κ΄λ¦¬νκΈ° μν λ€ κ°μ§ κΈ°λ³Έ μμ μ μλ―Έν©λλ€. CRUD μμ μ ν¨κ³Όμ μΌλ‘ ꡬννλ κ²μ λ°μ΄ν° μ μ₯μ μμ‘΄νλ λͺ¨λ μ ν리μΌμ΄μ μ κΈ°λ³Έμ μ΄λ©°, μνν λ°μ΄ν° μ‘°μκ³Ό κ²μμ 보μ₯ν©λλ€.
1.3 Read μμ μ λν μ§μ€
λͺ¨λ CRUD μμ μ΄ νμμ μ΄μ§λ§, μ΄ κ°μ΄λλ Read κΈ°λ₯μ μ€μ μ λ‘λλ€. Read μμ μ λ°μ΄ν°λ² μ΄μ€μμ λ°μ΄ν°λ₯Ό κ°μ Έμ€λ κ²μ ν¬ν¨νλ©°, μ΄λ μ¬μ©μμκ² μ 보λ₯Ό νμνκ³ , λ³΄κ³ μλ₯Ό μμ±νλ©°, λ°μ΄ν° λΆμμ μννλ λ° μ€μν©λλ€.
1.4 CRUDλ₯Ό μν Hibernate μ¬μ©μ μ₯λ¨μ
μ₯μ :
- κ°μνλ λ°μ΄ν°λ² μ΄μ€ μνΈ μμ©: 보μΌλ¬νλ μ΄νΈ SQL μ½λλ₯Ό μ κ±°ν©λλ€.
- λ°μ΄ν°λ² μ΄μ€ λ 립μ±: μ΅μνμ κ΅¬μ± λ³κ²½μΌλ‘ μ¬λ¬ λ°μ΄ν°λ² μ΄μ€λ₯Ό μ§μν©λλ€.
- μΊμ± μ§μ: λ°μ΄ν°λ² μ΄μ€ μ κ·Όμ μ€μ¬ μ±λ₯μ ν₯μμν΅λλ€.
- μλ μ€ν€λ§ μμ±: μν°ν° ν΄λμ€μμ λ°μ΄ν°λ² μ΄μ€ μ€ν€λ§λ₯Ό μμ±νμ¬ λΉ λ₯Έ κ°λ°μ μ΄μ§ν©λλ€.
λ¨μ :
- νμ΅ κ³‘μ : ORM κ°λ κ³Ό Hibernate κ³ μ μ ꡬμ±μ μ΄ν΄ν΄μΌ ν©λλ€.
- μ±λ₯ μ€λ²ν€λ: λ¨μ 쿼리μ λΉν΄ μ§μ° μκ°μ΄ λ°μν μ μμ΅λλ€.
- λ¨μ μ ν리μΌμ΄μ μ 볡μ‘μ±: λ°μ΄ν°λ² μ΄μ€ μνΈ μμ©μ΄ μ΅μμΈ μ ν리μΌμ΄μ μλ κ³Όλν μ μμ΅λλ€.
1.5 Hibernate Read μμ μ μ¬μ©ν μκΈ°μ μ₯μ
Hibernateμ Read μμ μ νΉν μν°ν° κ°μ 볡μ‘ν κ΄κ³λ₯Ό λ€λ£° λ κ²¬κ³ ν λ°μ΄ν° κ²μ λ©μ»€λμ¦μ΄ νμν μ ν리μΌμ΄μ μ μ΄μμ μ λλ€. μ΄λ μν°νλΌμ΄μ¦ μμ€μ μ ν리μΌμ΄μ , μ½ν μΈ κ΄λ¦¬ μμ€ν , λ°μ΄ν° μ‘°μμ μ©μ΄μ±κ³Ό νμ₯μ±μ΄ μ°μ μΈ νλ‘μ νΈμ μ ν©ν©λλ€.
CRUD μμ μ μν Hibernate μ€μ
2.1 νμ 쑰건
Hibernate CRUD μμ μ λ°μ΄λ€κΈ° μ μ λ€μμ νμΈνμμμ€:
- Java Development Kit (JDK): λ²μ 8 μ΄μ.
- ν΅ν© κ°λ° νκ²½ (IDE): Eclipse λλ IntelliJ IDEAμ κ°μ.
- Apache Tomcat Server: μΉ μ ν리μΌμ΄μ μ λ°°ν¬νλ κ²½μ°.
- Maven: νλ‘μ νΈ κ΄λ¦¬ λ° μμ‘΄μ± μ²λ¦¬λ₯Ό μν΄.
2.2 νλ‘μ νΈ κ΅¬μ‘° κ°μ
μΌλ°μ μΈ Hibernate νλ‘μ νΈλ ꡬ쑰νλ λλ ν 리 λ μ΄μμμ λ°λ¦ λλ€:
project-root/ βββ src/ β βββ main/ β β βββ java/ β β β βββ org.studyeasy/ β β β βββ App.java β β β βββ entity/ β β β βββ Users.java β β βββ resources/ β β βββ hibernate.cfg.xml β βββ test/ βββ target/ βββ pom.xml
2.3 hibernate.cfg.xml μ€μ
hibernate.cfg.xml νμΌμ Hibernateμ ꡬμ±μ νμμ μ λλ€. μ΄ νμΌμ λ°μ΄ν°λ² μ΄μ€ μ°κ²° μΈλΆ μ 보, λ°©μΈ μ¬μ, 맀ν μ 보λ₯Ό ν¬ν¨ν©λλ€. λ€μμ μν ꡬμ±μ λλ€:
<?xml version="1.0" encoding="UTF-8"?> <!DOCTYPE hibernate-configuration PUBLIC "-//Hibernate/Hibernate Configuration DTD 3.0//EN" "http://www.hibernate.org/dtd/hibernate-configuration-3.0.dtd"> <hibernate-configuration> <session-factory> <!-- λ°μ΄ν°λ² μ΄μ€ μ°κ²° μ€μ --> <property name="connection.driver_class">com.mysql.jdbc.Driver</property> <property name="connection.url">jdbc:mysql://localhost:3306/yourdb</property> <property name="connection.username">root</property> <property name="connection.password">password</property> <!-- SQL λ°©μΈ --> <property name="dialect">org.hibernate.dialect.MySQLDialect</property> <!-- μ€νλ λͺ¨λ SQLμ stdoutμ μΆλ ₯ --> <property name="show_sql">true</property> <!-- μμ μ λ°μ΄ν°λ² μ΄μ€ μ€ν€λ§λ₯Ό μμ νκ³ μ¬μμ± --> <property name="hbm2ddl.auto">update</property> <!-- 맀ν ν΄λμ€ --> <mapping class="org.studyeasy.entity.Users"/> </session-factory> </hibernate-configuration>
μν°ν° ν΄λμ€ μ΄ν΄νκΈ°
3.1 Users μν°ν° μμ±
Users μν°ν° ν΄λμ€λ λ°μ΄ν°λ² μ΄μ€μ users ν μ΄λΈμ 맀νλ©λλ€. μ΄ ν΄λμ€λ λ°μ΄ν°μ ꡬ쑰λ₯Ό μ μνλ©°, κΈ°λ³Έ ν€μ μ΄ λ§€νμ μ§μ νκΈ° μν μ΄λ Έν μ΄μ μ ν¬ν¨ν©λλ€.
package org.studyeasy.entity; import javax.persistence.*; @Entity @Table(name = "users") public class Users { @Id @GeneratedValue(strategy = GenerationType.IDENTITY) private int id; @Column(name = "username") private String username; @Column(name = "password") private String password; @Column(name = "first_name") private String firstName; @Column(name = "last_name") private String lastName; // κΈ°λ³Έ μμ±μ public Users() {} // 맀κ°λ³μ μμ±μ public Users(String username, String password, String firstName, String lastName) { this.username = username; this.password = password; this.firstName = firstName; this.lastName = lastName; } // Gettersμ Setters // ... @Override public String toString() { return "Users [id=" + id + ", username=" + username + ", firstName=" + firstName + ", lastName=" + lastName + "]"; } }
3.2 μμ±μ, Getters λ° Setters
- κΈ°λ³Έ μμ±μ: Hibernateκ° μν°ν°μ μΈμ€ν΄μ€λ₯Ό μμ±νλ λ° νμν©λλ€.
- 맀κ°λ³μ μμ±μ: νΉμ κ°μΌλ‘ κ°μ²΄λ₯Ό μ΄κΈ°ννλ λ° λμμ΄ λ©λλ€.
- Gettersμ Setters: μν°ν°μ νλμ λν μ κ·Όκ³Ό μμ μ μ©μ΄νκ² ν©λλ€.
3.3 toString λ©μλ μ€λ²λΌμ΄λ
toString λ©μλλ₯Ό μ€λ²λΌμ΄λνλ©΄ Users κ°μ²΄κ° μΆλ ₯λ λ κΈ°λ³Έ κ°μ²΄ μ°Έμ‘° λμ μλ―Έ μκ³ μ½κΈ° μ¬μ΄ μ 보λ₯Ό νμν μ μμ΅λλ€.
Read μμ ꡬν
4.1 Hibernate μΈμ μ΄κΈ°ν
λ°μ΄ν°λ² μ΄μ€μ μνΈ μμ©νλ €λ©΄ Hibernateλ SessionFactoryμ Sessionμ νμλ‘ ν©λλ€. SessionFactoryλ μ ν리μΌμ΄μ μμ μ ν λ² μμ±λλ λ¬΄κ±°μ΄ κ°μ²΄μ λλ€. Sessionμ κ°λ²Όμ΄ κ°μ²΄λ‘ CRUD μμ μ μννλ λ° μ¬μ©λ©λλ€.
4.2 νΈλμμ μμ
λͺ¨λ λ°μ΄ν°λ² μ΄μ€ μμ μ λ°μ΄ν° 무결μ±μ 보μ₯νκΈ° μν΄ νΈλμμ λ΄μμ μ΄λ£¨μ΄μ ΈμΌ ν©λλ€. CRUD μμ μ μννκΈ° μ μ νΈλμμ μ μμν©λλ€.
4.3 session.getμ μ¬μ©ν λ°μ΄ν° κ²μ
session.get λ©μλλ κΈ°λ³Έ ν€λ₯Ό κΈ°λ°μΌλ‘ μν°ν°λ₯Ό κ°μ Έμ΅λλ€. μν°ν°κ° λ°κ²¬λλ©΄ ν΄λΉ κ°μ²΄λ₯Ό λ°ννκ³ , κ·Έλ μ§ μμΌλ©΄ nullμ λ°νν©λλ€.
4.4 νΈλμμ 컀λ°
Read μμ μ μνν νμλ νΈλμμ μ 컀λ°νμ¬ μμ μ μλ£ν©λλ€.
4.5 κ²μλ λ°μ΄ν° νμ
μ€λ²λΌμ΄λλ toString λ©μλλ₯Ό μ¬μ©νμ¬ κ°μ Έμ¨ λ°μ΄ν°λ₯Ό μ¬λμ΄ μ½μ μ μλ νμμΌλ‘ νμν©λλ€.
μ½λ μ€λͺ
5.1 μμ ν Java μ½λ
package org.studyeasy; import org.hibernate.Session; import org.hibernate.SessionFactory; import org.hibernate.cfg.Configuration; import org.studyeasy.entity.Users; public class App { public static void main(String[] args) { // SessionFactory μμ± SessionFactory factory = new Configuration() .configure("hibernate.cfg.xml") .addAnnotatedClass(Users.class) .buildSessionFactory(); // Session μμ± Session session = factory.getCurrentSession(); try { // νΈλμμ μμ session.beginTransaction(); // IDκ° 2μΈ μ¬μ©μ κ²μ int userId = 2; Users user = session.get(Users.class, userId); // νΈλμμ μ»€λ° session.getTransaction().commit(); // μ¬μ©μ μ 보 νμ System.out.println(user); } finally { factory.close(); } } }
5.2 λ¨κ³λ³ μ€λͺ
- SessionFactory μμ±:
SessionFactory factory = new Configuration() .configure("hibernate.cfg.xml") .addAnnotatedClass(Users.class) .buildSessionFactory();
– hibernate.cfg.xmlμ μ¬μ©νμ¬ Hibernateλ₯Ό ꡬμ±ν©λλ€.
– Users μν°ν° ν΄λμ€λ₯Ό λ±λ‘ν©λλ€.
– SessionFactoryλ₯Ό ꡬμΆν©λλ€. - Session μ΄κΈ°ν:
Session session = factory.getCurrentSession();
– SessionFactoryμμ νμ¬ μΈμ μ κ°μ Έμ΅λλ€.
- νΈλμμ
μμ:
session.beginTransaction();
– μ νΈλμμ μ μμν©λλ€.
- λ°μ΄ν° κ²μ:
int userId = 2; Users user = session.get(Users.class, userId);
– session.getμ μ¬μ©νμ¬ id=2μΈ Users μν°ν°λ₯Ό κ°μ Έμ΅λλ€.
– κ²°κ³Όλ₯Ό user κ°μ²΄μ μ μ₯ν©λλ€. - νΈλμμ
컀λ°:
session.getTransaction().commit();
– νΈλμμ μ λ§λ¬΄λ¦¬νμ¬ μμ μ μλ£ν©λλ€.
- κ²μλ λ°μ΄ν° νμ:
System.out.println(user);
– μ€λ²λΌμ΄λλ toString λ©μλλ₯Ό νμ©νμ¬ Users κ°μ²΄λ₯Ό μΆλ ₯ν©λλ€.
- SessionFactory λ«κΈ°:
factory.close();
– SessionFactoryκ° λ³΄μ ν 리μμ€λ₯Ό ν΄μ ν©λλ€.
5.3 μΆλ ₯ λΆμ
μ ν리μΌμ΄μ μ΄ μ±κ³΅μ μΌλ‘ μ€νλλ©΄ μ½μμ λ€μκ³Ό κ°μ νμμΌλ‘ κ²μλ μ¬μ©μμ μ λ³΄κ° μ½κΈ° μ½κ² νμλ©λλ€:
Users [id=2, username=Chand, firstName=Pooja, lastName=Singh]
μ΄ μΆλ ₯μ Read μμ μ΄ id=2μΈ μ¬μ©μλ₯Ό λ°μ΄ν°λ² μ΄μ€μμ μ±κ³΅μ μΌλ‘ κ°μ Έμ κ΄λ ¨λ μΈλΆ μ 보λ₯Ό νμνμμ νμΈμμΌμ€λλ€.
κ²°λ‘
6.1 ν΅μ¬ λ΄μ©
- Hibernateλ CRUDλ₯Ό κ°μν: Hibernateλ 볡μ‘ν SQL μμ μ μΆμννμ¬ Java κ°μ²΄λ₯Ό ν΅ν λ°μ΄ν° μ‘°μμ λ³΄λ€ μ§κ΄μ μΌλ‘ λ§λλλ€.
- νμ ꡬμ±: hibernate.cfg.xml λ° μν°ν° ν΄λμ€μ μ μ ν μ€μ μ μνν μμ μ μν΄ μ€μν©λλ€.
- Read μμ μ κΈ°λ³Έ: session.getμ νμ©νμ¬ κΈ°λ³Έ ν€λ₯Ό κΈ°λ°μΌλ‘ ν¨μ¨μ μΈ λ°μ΄ν° κ²μμ΄ κ°λ₯ν©λλ€.
- νΈλμμ 무결μ±: λ°μ΄ν° μΌκ΄μ±μ μ μ§νκΈ° μν΄ νμ νΈλμμ λ΄μμ CRUD μμ μ μνν΄μΌ ν©λλ€.
6.2 λ€μ λ¨κ³: μΆκ° CRUD μμ νμ
μ΄μ Hibernateμμ Read μμ μ λ§μ€ν°νμΌλ―λ‘ λ€μμ κ³ λ €ν΄ λ³΄μμμ€:
- Create: λ°μ΄ν°λ² μ΄μ€μ μ λ μ½λλ₯Ό μΆκ°.
- Update: κΈ°μ‘΄ λ μ½λλ₯Ό μμ .
- Delete: λ°μ΄ν°λ² μ΄μ€μμ λ μ½λλ₯Ό μμ .
κ° μμ μ μ΄ κ°μ΄λμμ λ€λ£¬ κΈ°λ³Έ κ°λ μ λ°νμΌλ‘ ꡬμΆλμ΄ Hibernateμ λν μλ ¨λλ₯Ό λμ± ν₯μμν΅λλ€.
6.3 μΆκ° μλ£
- Hibernate λ¬Έμ: Hibernate ORM 곡μ λ¬Έμ
- νν 리μΌ:
- λμ:
- Java Persistence with Hibernate by Christian Bauer and Gavin King
- Hibernate in Action by Christian Bauer and Gavin King
μ°Έκ³ : μ΄ κΈ°μ¬λ AIμ μν΄ μμ±λμμ΅λλ€.
“`