[Java] Hibernate๋ž€?

2024. 1. 22. 12:18ยท๐Ÿ“ Language/Java
๋ชฉ์ฐจ
  1. Hibernate ๋ž€?
  2. Hibernate์˜ ์žฅ์ 
  3. Hibernate์˜ ๋‹จ์ 
  4. Hibernate ์‚ฌ์šฉ 
  5. ํ™˜๊ฒฝ ์„ค์ • ํŒŒ์ผ
  6. ๋งคํ•‘
  7. Session Factory
  8. DAO 
๋ฐ˜์‘ํ˜•

 

์ด๋ฒˆ ์‹œ๊ฐ„์—๋Š” Hiberante์— ๋Œ€ํ•˜์—ฌ ์•Œ์•„๋ณด๋ ค๊ณ  ํ•œ๋‹ค.

Java ๊ธฐ๋ฐ˜์˜ ๊ฐœ๋ฐœ์—์„œ ๋งŽ์ด ์‚ฌ์šฉ๋˜๋Š” ORM (Object-Relational Mapping) ํ”„๋ ˆ์ž„์›Œํฌ์ด๋‹ค.

Java ์–ธ์–ด๋กœ ๊ฐœ๋ฐœ๋œ ์• ํ”Œ๋ฆฌ์ผ€์ด์…˜์—์„œ ๋ฐ์ดํ„ฐ๋ฒ ์ด์Šค์™€์˜ ์ƒํ˜ธ์ž‘์šฉ์„ ์‰ฝ๊ฒŒ ์ฒ˜๋ฆฌํ•  ์ˆ˜ ์žˆ๋„๋ก ๋„์™€์ฃผ๋Š” ๋„๊ตฌ ์ค‘ ํ•˜๋‚˜์ด๋ฉฐ, 

Hibernate๋Š” ๊ฐ์ฒด ์ง€ํ–ฅ ํ”„๋กœ๊ทธ๋ž˜๋ฐ๊ณผ ๊ด€๊ณ„ํ˜• ๋ฐ์ดํ„ฐ๋ฒ ์ด์Šค ๊ฐ„์˜ ๋งคํ•‘์„ ๋‹ด๋‹นํ•˜์—ฌ ๊ฐœ๋ฐœ์ž๊ฐ€ ๊ฐ์ฒด ๋ชจ๋ธ์„ ์‚ฌ์šฉํ•˜์—ฌ

๋ฐ์ดํ„ฐ๋ฒ ์ด์Šค์™€ ์ƒํ˜ธ์ž‘์šฉํ•  ์ˆ˜ ์žˆ๊ฒŒ ํ•ด์ค€๋‹ค.


 

Hibernate ๋ž€?

  • Java ํด๋ž˜์Šค๋ฅผ ๋ฐ์ดํ„ฐ๋ฒ ์ด์Šค ํ…Œ์ด๋ธ”์— ๋งคํ•‘ํ•˜๋Š” ํŽธ๋ฆฌํ•˜๊ณ  ๊ฐ•๋ ฅํ•œ ๋ฐฉ๋ฒ•์„ ์ œ๊ณตํ•˜๋Š” ๋„๋ฆฌ ์‚ฌ์šฉ๋˜๋Š” Java์šฉ ORM(๊ฐ์ฒด ๊ด€๊ณ„ํ˜• ๋งคํ•‘) ํ”„๋ ˆ์ž„์›Œํฌ
  • ์ฃผ์„์„ ์‚ฌ์šฉํ•˜๋ฉด ์—”ํ‹ฐํ‹ฐ ๊ฐ„์˜ ๊ด€๊ณ„๋ฅผ ์‰ฝ๊ฒŒ ์ •์˜, ๋ฐ์ดํ„ฐ๋ฒ ์ด์Šค์— ์œ ์ง€ํ•˜๋Š” ๋ฐฉ๋ฒ•์„ ์ง€์ •ํ•˜๋ฉฐ ์—”ํ‹ฐํ‹ฐ ํด๋ž˜์Šค์˜ ์ƒ์† ๊ณ„์ธต ๊ตฌ์กฐ๋ฅผ ๊ด€๋ฆฌ
  • ๋‚ด๋ถ€์ ์œผ๋กœ JDBC API๋ฅผ ์‚ฌ์šฉ

Hibernate์˜ ์žฅ์ 

  1. ๊ฐ„๋‹จํ•œ ๊ฐ์ฒด ๋ชจ๋ธ
    •  Hibernate๋Š” ๊ฐ์ฒด ์ง€ํ–ฅ ํ”„๋กœ๊ทธ๋ž˜๋ฐ ์–ธ์–ด์ธ Java์˜ ๊ฐ์ฒด ๋ชจ๋ธ๊ณผ ๊ด€๊ณ„ํ˜• ๋ฐ์ดํ„ฐ๋ฒ ์ด์Šค ๊ฐ„์˜ ๋งคํ•‘์„ ๊ฐ„๋‹จํ™”ํ•˜๋ฉฐ, ๊ฐœ๋ฐœ์ž๊ฐ€ ๋ณต์žกํ•œ SQL ์ฟผ๋ฆฌ๋ฅผ ์ž‘์„ฑํ•˜์ง€ ์•Š์•„๋„ ๋œ๋‹ค.
  2. ๋†’์€ ์ƒ์‚ฐ์„ฑ
    •  ๋ฐ์ดํ„ฐ๋ฒ ์ด์Šค์™€์˜ ์ƒํ˜ธ์ž‘์šฉ์ด ๊ฐ„๋‹จํ•ด์ง€๋ฏ€๋กœ ๊ฐœ๋ฐœ์ž๋Š” ๋น ๋ฅด๊ฒŒ ๊ฐœ๋ฐœํ•  ์ˆ˜ ์žˆ๊ณ , ๋ฐ˜๋ณต์ ์ธ ์ž‘์—…์„ ์ตœ์†Œํ™”ํ•  ์ˆ˜ ์žˆ๋‹ค.
  3. ๋ฐ์ดํ„ฐ๋ฒ ์ด์Šค ๋…๋ฆฝ์„ฑ
    •  Hibernate๋Š” ๋ฐ์ดํ„ฐ๋ฒ ์ด์Šค ๋ฒค๋”์— ๋…๋ฆฝ์ ์ด๋ฏ€๋กœ, ๋ฐ์ดํ„ฐ๋ฒ ์ด์Šค๋ฅผ ๋ณ€๊ฒฝํ•ด๋„ ์ฝ”๋“œ ๋ณ€๊ฒฝ์ด ํ•„์š”ํ•˜์ง€ ์•Š์„ ์ˆ˜ ์žˆ๋‹ค.
  4. ์บ์‹ฑ ์ง€์›
    •  Hibernate๋Š” ๊ฐ์ฒด์™€ ๋ฐ์ดํ„ฐ๋ฒ ์ด์Šค ๊ฐ„์˜ ์„ฑ๋Šฅ์„ ํ–ฅ์ƒ์‹œํ‚ค๊ธฐ ์œ„ํ•œ ๋‹ค์–‘ํ•œ ์บ์‹ฑ ์ „๋žต์„ ์ œ๊ณตํ•œ๋‹ค.
  5. ํŠธ๋žœ์žญ์…˜ ๊ด€๋ฆฌ
    •  Hibernate๋Š” ํŠธ๋žœ์žญ์…˜์„ ๊ด€๋ฆฌํ•˜๋Š” ๋ฐ ๋„์›€์„ ์ฃผ๋ฉฐ, ACID ์†์„ฑ์„ ์ง€์›ํ•˜์—ฌ ๋ฐ์ดํ„ฐ ์ผ๊ด€์„ฑ์„ ์œ ์ง€ํ•œ๋‹ค.

Hibernate์˜ ๋‹จ์ 

  1. ํ•™์Šต ๊ณก์„ 
    • Hibernate๋ฅผ ์ œ๋Œ€๋กœ ํ™œ์šฉํ•˜๊ธฐ ์œ„ํ•ด์„œ๋Š” ORM ๊ฐœ๋…๊ณผ Hibernate์˜ ์„ค์ • ๋“ฑ์„ ํ•™์Šตํ•ด์•ผ ํ•˜๋ฏ€๋กœ ์ดˆ๊ธฐ ํ•™์Šต ๊ณก์„ ์ด ์กด์žฌํ•œ๋‹ค.
  2. ์„ฑ๋Šฅ ์ด์Šˆ
    • ์ž˜๋ชป๋œ ์‚ฌ์šฉ ๋˜๋Š” ๋ถ€์ ์ ˆํ•œ ์„ค์ •์œผ๋กœ ์ธํ•ด ์„ฑ๋Šฅ ์ด์Šˆ๊ฐ€ ๋ฐœ์ƒํ•  ์ˆ˜ ์žˆ๋‹ค. ํŠนํžˆ ํฐ ๊ทœ๋ชจ์˜ ๋ฐ์ดํ„ฐ๋ฒ ์ด์Šค์™€์˜ ์ž‘์—…์—์„œ ์ฃผ์˜๊ฐ€ ํ•„์š”ํ•˜๋‹ค.
  3. ๋ณต์žก์„ฑ
    • Hibernate๋ฅผ ์‚ฌ์šฉํ•˜๋ฉด์„œ ๋ฐœ์ƒํ•˜๋Š” ๋งŽ์€ ์„ค์ •๊ณผ ๊ธฐ๋Šฅ์€ ํ”„๋กœ์ ํŠธ์— ๋”ฐ๋ผ ๋ณต์žก์„ฑ์„ ์ฆ๊ฐ€์‹œํ‚ฌ ์ˆ˜ ์žˆ๋‹ค.
  4. DBA์˜ ์ œ์•ฝ
    • ์ผ๋ถ€ DBAs๋Š” Hibernate์™€ ๊ฐ™์€ ORM ๋„๊ตฌ๋ฅผ ์„ ํ˜ธํ•˜์ง€ ์•Š์„ ์ˆ˜ ์žˆ์œผ๋ฉฐ, ํŠนํžˆ ์„ฑ๋Šฅ ์ตœ์ ํ™” ๋ฐ ์ฟผ๋ฆฌ ํŠœ๋‹ ์ธก๋ฉด์—์„œ ์ œ์•ฝ์„ ๊ฐ€์งˆ ์ˆ˜ ์žˆ๋‹ค.
  5. ์ตœ์‹  ๊ธฐ์ˆ ๊ณผ์˜ ํ†ตํ•ฉ ์ง€์—ฐ

 

Hibernate ์‚ฌ์šฉ 

ํ™˜๊ฒฝ ์„ค์ • ํŒŒ์ผ

  • gradle ๋˜๋Š” maven ํ”„๋กœ์ ํŠธ๋Š” ๊ธฐ๋ณธ์ ์œผ๋กœ src/main ๋””๋ ‰ํ„ฐ๋ฆฌ์—์„œ java์™€ resources ํŒจํ‚ค์ง€๋กœ ๋‚˜๋‰˜๋Š”๋ฐ resources์— ๋Œ€๋ถ€๋ถ„์˜ ํ™˜๊ฒฝ ์„ค์ • ํŒŒ์ผ ๋ฐ ์ •์  ํŒŒ์ผ๋“ค์ด ํฌํ•จ
  • Hibernate์˜ ํ™˜๊ฒฝ ์„ค์ •๋„ resources์—์„œ ์ž‘์„ฑ
<?xml version="1.0" encoding="UTF-8" ?>
<persistence xmlns="http://xmlns.jcp.org/xml/ns/persistence" version="2.1">
    <persistence-unit name="blog">
        <!-- ์—”ํ‹ฐํ‹ฐ ํด๋ž˜์Šค -->
        <class>entity.User</class>
        <class>entity.UserLog</class>
        <properties>
        <!-- ํ•„์ˆ˜ ์†์„ฑ -->
            <property name="javax.persistence.jdbc.url" value="jdbc:mysql://175.210.112.200:3006/blog_test?autoReconnect=true"/>
            <property name="javax.persistence.jdbc.user" value="bizplus"/>
            <property name="javax.persistence.jdbc.password" value="bizplus"/>
            <property name="javax.persistence.jdbc.driver" value="com.mysql.cj.jdbc.Driver"/>

            <!-- ์˜ต์…˜ ์†์„ฑ -->
            <!-- ์ฝ˜์†”์— ํ•˜์ด๋ฒ„๋„ค์ดํŠธ๊ฐ€ ์‹คํ–‰ํ•˜๋Š” SQL๋ฌธ ์ถœ๋ ฅ -->
            <property name="hibernate.show_sql" value="true"/>
            <!-- SQL ์ถœ๋ ฅ ์‹œ ๋ณด๊ธฐ ์‰ฝ๊ฒŒ ์ •๋ ฌ -->
            <property name="hibernate.format_sql" value="true"/>
            <!-- ์• ํ”Œ๋ฆฌ์ผ€์ด์…˜ ์‹คํ–‰ ์‹œ์ ์— ๋ฐ์ดํ„ฐ๋ฒ ์ด์Šค ํ…Œ์ด๋ธ” ์ž๋™ ์ƒ์„ฑ -->
            <property name="hibernate.hbm2ddl.auto" value="create"/>
        </properties>
    </persistence-unit>
</persistence>

 

๋งคํ•‘

  • Hibernate ๋งคํ•‘์€ ์ž๋ฐ” ์ฝ”๋“œ๋กœ ์ž‘์„ฑํ•œ ๊ฐ์ฒด์™€ ๊ด€๊ณ„ํ˜• ๋ฐ์ดํ„ฐ๋ฒ ์ด์Šค์˜ ๊ฐ์ข… ํ…Œ์ด๋ธ” ๊ฐ„์˜ ๊ด€๊ณ„ ๋ฐ ํ…Œ์ด๋ธ” ์Šคํ‚ค๋งˆ ๋“ฑ์„ ๋งค
  • ๊ฐ ํ…Œ์ด๋ธ”์„ Hibernate๋ฅผ ์‚ฌ์šฉํ•˜์—ฌ ์ž๋ฐ” ์ฝ”๋“œ๋กœ ์ž‘์„ฑํ•œ ํด๋ž˜์Šค๋ฅผ ์—”ํ‹ฐํ‹ฐ(Entity)
  • ํด๋ž˜์Šค๋ฅผ ์—”ํ‹ฐํ‹ฐ๋กœ ๋งŒ๋“ค๊ธฐ ์œ„ํ•ด์„œ๋Š” ํด๋ž˜์Šค์— javax.persistence.Entity ์–ด๋…ธํ…Œ์ด์…˜์„ ์„ ์–ธํ•˜๋ฉด ๋œ๋‹ค
  •  ์—”ํ‹ฐํ‹ฐ๋ฅผ ์ž‘์„ฑํ•  ๋•Œ ์ฃผ์˜ํ•ด์•ผ ํ•  ์ ์€ ๋ฐ˜๋“œ์‹œ ๊ธฐ๋ณธ ์ƒ์„ฑ์ž๋ฅผ ๋งŒ๋“ค์–ด์ค˜์•ผ ํ•œ๋‹ค
@Entity
@Table(name = "posts")
@Getter
@Setter
@ToString
@NamedQueries({
        @NamedQuery(name = "Post.findAll", query = "SELECT p FROM Post p INNER JOIN User u ON p.user.id = u.id WHERE p.deletedAt is null ORDER BY p.createdAt DESC "),
        @NamedQuery(name = "Post.findById", query = "SELECT p.id, p.title, p.body FROM Post p WHERE p.id = :id")
})
public class Post {

    @Id
    @GeneratedValue(strategy = GenerationType.IDENTITY)
    @Column(name = "id", unique = true, nullable = true)
    private Integer id;

    private String title;

    private String body;

    @ManyToOne
    @JoinColumn(name = "user_id")
    private User user;

    @Temporal(TemporalType.TIMESTAMP)
    @Column(name = "created_at")
    private Date createdAt;

    @Temporal(TemporalType.TIMESTAMP)
    @Column(name = "updated_at")
    private Date updatedAt;

    @Temporal(TemporalType.TIMESTAMP)
    @Column(name = "deleted_at")
    private Date deletedAt;

    @OneToMany(mappedBy = "post", cascade = CascadeType.PERSIST)
    private List<Comment> commentList = new ArrayList<>();

    @ManyToMany(fetch = FetchType.EAGER, cascade = CascadeType.PERSIST)
    @JoinTable(
            name = "post_tag",
            joinColumns = {@JoinColumn(name = "post_id", referencedColumnName = "id")},
            inverseJoinColumns = {@JoinColumn(name = "tag_id", referencedColumnName = "id")}
    )
    private List<Tag> tags = new ArrayList<>();

    @OneToMany(mappedBy = "post", cascade = CascadeType.PERSIST)
    private List<Like> likeList = new ArrayList<>();

}

 

Session Factory

  • EntityManagerFactory 
    • Hibernate์˜ ์„ธ์…˜์„ ์ƒ์„ฑํ•˜๊ณ  ๊ด€๋ฆฌํ•˜๋Š”๋ฐ ์‚ฌ์šฉ๋˜๋Š” ์ธํ„ฐํŽ˜์ด์Šค์ž…๋‹ˆ๋‹ค. ์ด ํด๋ž˜์Šค์˜ ์ธ์Šคํ„ด์Šค๋Š” ์• ํ”Œ๋ฆฌ์ผ€์ด์…˜ ๋ ˆ๋ฒจ์—์„œ ๋‹จ ํ•˜๋‚˜๋งŒ ์กด์žฌ
package com.blog.util;

import javax.persistence.EntityManagerFactory;
import javax.persistence.Persistence;

public class HibernateUtil {

    private static EntityManagerFactory entityManagerFactory;

    static {
        try{
            entityManagerFactory = Persistence.createEntityManagerFactory("blog");
        }catch (Exception e){
            System.out.println("Hibernate Util Error");
            e.printStackTrace();
        }
    }

    public static EntityManagerFactory getEntityManagerFactory(){
        return entityManagerFactory;
    }

    public static void closeEntityManagerFactory(){
        try {
            entityManagerFactory.close();
        }catch (Exception e) {
            System.out.println("Close EntityManagerFactory Error");
            e.printStackTrace();
        }
    }
}

 

DAO 

package com.blog.data.dao;

import com.blog.util.HibernateUtil;

import javax.persistence.EntityManager;
import javax.persistence.EntityManagerFactory;
import javax.persistence.EntityTransaction;
import javax.persistence.Query;
import java.util.List;
import java.util.Map;
import java.util.Set;

public class JpaDAO<E> {

    protected EntityManagerFactory entityManagerFactory = HibernateUtil.getEntityManagerFactory();

    //๋“ฑ๋ก(C)
    public E create(E entity) {
        EntityManager entityManager = entityManagerFactory.createEntityManager();
        EntityTransaction entityTransaction = entityManager.getTransaction();
        try {
            entityTransaction.begin();
            entityManager.persist(entity);
            entityTransaction.commit();
            return entity;
        } catch (Exception e) {
            e.printStackTrace();
            entityTransaction.rollback();
            return null;
        } finally {
            entityManager.close();
        }
    }

    //์ˆ˜์ •(U)
    public E update(E entity) {
        EntityManager entityManager = entityManagerFactory.createEntityManager();
        EntityTransaction entityTransaction = entityManager.getTransaction();
        try {
            entityTransaction.begin();
            entityManager.merge(entity);
            entityTransaction.commit();
            return entity;
        } catch (Exception e) {
            e.printStackTrace();
            entityTransaction.rollback();
            return null;
        } finally {
            entityManager.close();
        }
    }

    //์กฐํšŒ(F)
    public E find(Class<E> type, Object id) {
        EntityManager entityManager = entityManagerFactory.createEntityManager();
        E entity = entityManager.find(type, id);

        if (entity == null) {
            return null;
        } else {
            return entity;
        }
    }


    //์‚ญ์ œ(D)
    public boolean delete(Class<E> type, Object id) {
        EntityManager entityManager = entityManagerFactory.createEntityManager();
        EntityTransaction entityTransaction = entityManager.getTransaction();

        try {
            Object references = entityManager.getReference(type, id);
            entityTransaction.begin();
            entityManager.remove(references);
            entityTransaction.commit();
            return true;
        } catch (Exception e) {
            e.printStackTrace();
            entityTransaction.rollback();
            return false;
        } finally {
            entityManager.close();
        }
    }

    //๋ฆฌ์ŠคํŠธ
    public List<E> findWithNamedQuery(String queryName) {
        EntityManager entityManager = entityManagerFactory.createEntityManager();

        Query query = entityManager.createNamedQuery(queryName);
        List<E> result = query.getResultList();

        entityManager.close();

        return result;
    }


    public List<E> findWithNamedQuery(String queryName, Map<String, Object> parameters) {
        EntityManager entityManager = entityManagerFactory.createEntityManager();
        Query query = entityManager.createNamedQuery(queryName);

        Set<Map.Entry<String, Object>> setParameters = parameters.entrySet();

        for (Map.Entry<String, Object> entry : setParameters) {
            query.setParameter(entry.getKey(), entry.getValue());
        }
        return query.getResultList();
    }

    public List<E> findWithNamedQuery(String queryName, String paramName, Object paramValue) {
        EntityManager entityManager = entityManagerFactory.createEntityManager();
        Query query = entityManager.createNamedQuery(queryName);

        query.setParameter(paramName, paramValue);

        List<E> result = query.getResultList();
        entityManager.close();

        return result;
    }

    public long countWithNamedQuery(String queryName) {
        EntityManager entityManager = entityManagerFactory.createEntityManager();
        Query query = entityManager.createNamedQuery(queryName);

        long result = (long) query.getSingleResult();
        entityManager.close();

        return result;
    }

    public long countWithNamedQuery(String queryName, String paramName, Object paramValue) {
        EntityManager entityManager = entityManagerFactory.createEntityManager();
        Query query = entityManager.createNamedQuery(queryName);
        query.setParameter(paramName, paramValue);

        long result = (long) query.getSingleResult();
        entityManager.close();

        return result;
    }

}
  • ์œ„ ์ฝ”๋“œ์—์„œ entityMangaerFactory์˜ ๊ณตํ†ต์ ์œผ๋กœ ์‚ฌ์šฉ ํ•   ์ˆ˜ ์žˆ๋Š” ๊ธฐ๋ณธ์ ์ธ CRUD ๋ฉ”์†Œ๋“œ๋ฅผ ๊ด€๋ฆฌ ํ•˜์˜€๋‹ค.
  • https://github.com/94-c/toy_servlet-blog-project
 

GitHub - 94-c/toy_servlet-blog-project: # Hibernate ๋ฐ Servlet ๋ฅผ ํ™œ์šฉํ•œ Blog ํ”„๋กœ์ ํŠธ

# Hibernate ๋ฐ Servlet ๋ฅผ ํ™œ์šฉํ•œ Blog ํ”„๋กœ์ ํŠธ. Contribute to 94-c/toy_servlet-blog-project development by creating an account on GitHub.

github.com

 

๋ฐ˜์‘ํ˜•

'๐Ÿ“ Language > Java' ์นดํ…Œ๊ณ ๋ฆฌ์˜ ๋‹ค๋ฅธ ๊ธ€

[Java - Hibernate] ORM, ์˜์†์„ฑ, ์˜์†์„ฑ ์ปจํ…์ŠคํŠธ๋Š” ๋ฌด์—‡์ธ๊ฐ€?  (0) 2024.01.22
[Java] JVM(Java Virtual Machine) ์ด๋ž€?  (0) 2024.01.13
[Java] Java์˜ ๊ธฐ๋ณธ ๊ฐœ๋…  (0) 2024.01.12
  1. Hibernate ๋ž€?
  2. Hibernate์˜ ์žฅ์ 
  3. Hibernate์˜ ๋‹จ์ 
  4. Hibernate ์‚ฌ์šฉ 
  5. ํ™˜๊ฒฝ ์„ค์ • ํŒŒ์ผ
  6. ๋งคํ•‘
  7. Session Factory
  8. DAO 
'๐Ÿ“ Language/Java' ์นดํ…Œ๊ณ ๋ฆฌ์˜ ๋‹ค๋ฅธ ๊ธ€
  • [Java - Hibernate] ORM, ์˜์†์„ฑ, ์˜์†์„ฑ ์ปจํ…์ŠคํŠธ๋Š” ๋ฌด์—‡์ธ๊ฐ€?
  • [Java] JVM(Java Virtual Machine) ์ด๋ž€?
  • [Java] Java์˜ ๊ธฐ๋ณธ ๊ฐœ๋…
Boom's
Boom's
๋ถ„์•ผ๋ฅผ ๊ฐ€๋ฆฌ์ง€ ์•Š๊ณ  ํ•ญ์ƒ ๋ฐฐ์šฐ๊ณ , ์‘์šฉํ•˜๊ณ  ์‹ถ์€ Boom ๊ฐœ๋ฐœ์ž ๋ธ”๋กœ๊ทธ
Boom's
Boom's Devlog
Boom's
์ „์ฒด
์˜ค๋Š˜
์–ด์ œ
  • ์นดํ…Œ๊ณ ๋ฆฌ (26)
    • ๐Ÿง‘๐Ÿปโ€๐Ÿ’ป Re:Mind (5)
      • ๐Ÿ”ฅ ํšŒ๊ณ  (3)
      • ๐Ÿ“• ์ˆ˜๋ฃŒ์ฆ (2)
    • ๐Ÿ“ Language (5)
      • Java (4)
    • ๐ŸŒฟSpring (8)
      • Spring Framework (6)
      • Spring Security (0)
      • Spring Data JPA (2)
    • ๐ŸŒบ Laravel (1)
    • Database (4)
      • SQL (1)
      • Redis (2)
    • ๐Ÿ“ Infra (2)
      • DevOps (1)
      • Docker (0)
      • AWS (0)
      • ArgoCD (1)
    • Etc (1)

๋ธ”๋กœ๊ทธ ๋ฉ”๋‰ด

  • ํ™ˆ
  • Github

๊ณต์ง€์‚ฌํ•ญ

์ธ๊ธฐ ๊ธ€

ํƒœ๊ทธ

  • Hibernate
  • ๋ ˆ๋””์Šค
  • Redis
  • ํ”„๋กœ๊ทธ๋ž˜๋ฐ
  • Thyemelaf
  • OSIV
  • argocd
  • gitops
  • decoupledLogic
  • HTML
  • springdatajpa
  • redis-cli
  • springframework
  • laravel
  • springboot
  • php
  • spring
  • ํ”„๋กœ๊ทธ๋ž˜๋ฐ์ง€์‹
  • java
  • NoSQL
  • ORM
  • ํ”„๋กœ๊ทธ๋ž˜๋ฐ ์ง€์‹
  • ๊ฐœ๋ฐœ
  • ํšŒ๊ณ ๋ก
  • Database
  • ๋ช…๋ น์–ด
  • cicd
  • springframewokr
  • SpringFramwork
  • JPA

์ตœ๊ทผ ๋Œ“๊ธ€

์ตœ๊ทผ ๊ธ€

hELLOยท Designed By์ •์ƒ์šฐ.v4.5.2
Boom's
[Java] Hibernate๋ž€?
์ƒ๋‹จ์œผ๋กœ

ํ‹ฐ์Šคํ† ๋ฆฌํˆด๋ฐ”

๋‹จ์ถ•ํ‚ค

๋‚ด ๋ธ”๋กœ๊ทธ

๋‚ด ๋ธ”๋กœ๊ทธ - ๊ด€๋ฆฌ์ž ํ™ˆ ์ „ํ™˜
Q
Q
์ƒˆ ๊ธ€ ์“ฐ๊ธฐ
W
W

๋ธ”๋กœ๊ทธ ๊ฒŒ์‹œ๊ธ€

๊ธ€ ์ˆ˜์ • (๊ถŒํ•œ ์žˆ๋Š” ๊ฒฝ์šฐ)
E
E
๋Œ“๊ธ€ ์˜์—ญ์œผ๋กœ ์ด๋™
C
C

๋ชจ๋“  ์˜์—ญ

์ด ํŽ˜์ด์ง€์˜ URL ๋ณต์‚ฌ
S
S
๋งจ ์œ„๋กœ ์ด๋™
T
T
ํ‹ฐ์Šคํ† ๋ฆฌ ํ™ˆ ์ด๋™
H
H
๋‹จ์ถ•ํ‚ค ์•ˆ๋‚ด
Shift + /
โ‡ง + /

* ๋‹จ์ถ•ํ‚ค๋Š” ํ•œ๊ธ€/์˜๋ฌธ ๋Œ€์†Œ๋ฌธ์ž๋กœ ์ด์šฉ ๊ฐ€๋Šฅํ•˜๋ฉฐ, ํ‹ฐ์Šคํ† ๋ฆฌ ๊ธฐ๋ณธ ๋„๋ฉ”์ธ์—์„œ๋งŒ ๋™์ž‘ํ•ฉ๋‹ˆ๋‹ค.