스프링-몇글자부터 Lob을 써야 할까?

이진우·2023년 9월 19일
0

스프링 학습

목록 보기
15/41

제목 그대로이다. 자바 String 은 몇 글자부터 DB에 못들어가고 @Lob을 써야 할지 알아보겠다.

코드

Item item=new Item();
            item.setName("ABCDEFGHIJKLMNOPABCDEFGHIJKLMNOPABCDEFGHIJKLMNOPABCDEFGHIJKLMNOPABCDEFGHIJKLMNOPABCDEFGHIJKLMNOPABCDEFGHIJKLMNOPABCDEFGHIJKLMNOPABCDEFGHIJKLMNOPABCDEFGHIJKLMNOPABCDEFGHIJKLMNOP" +
                    "ABCDEFGHIJKLMNOPABCDEFGHIJKLMNOPABCDEFGHIJKLMNOPABCDEFGHIJKLMNOPABCDEFGHIJKLMNO");
            item.setPrice(3000);
            item.setStockQuantity(15);
            em.persist(item);
            System.out.println(item.getName().length());

위에서 이름은 그냥 String name으로 하였다.
item의 이름의 길이는 출력결과

255였고 잘 들어가있는 것을 볼 수 있다.

그런데!!!

256글자가 된다면??

이렇게 DB는 텅 비어버리게 되고

em.persist(member)와 em.persist(team) 등 em.persist(item)보다 아래에 있던 테이블은 insert 쿼리 조차 안나갔다.

Hibernate: 
    call next value for hibernate_sequence
256
Hibernate: 
    call next value for hibernate_sequence
Hibernate: 
    call next value for hibernate_sequence
Hibernate: 
    call next value for hibernate_sequence
Hibernate: 
    /* insert jpa_book_dionisos198.domain.Item
        */ insert 
        into
            Item
            (name, price, stockQuantity, ITEM_ID) 
        values
            (?, ?, ?, ?)

이것이 쿼리의 전부였다.

그렇다면 @Lob을 붙여보자

    @Lob
    private String name;

이렇게 실행을 해보면

다른 쿼리들과 함께 다른 table의 insert 문도 아래와 같이 나가고

/* insert jpa_book_dionisos198.domain.Item
        */ insert 
        into
            Item
            (name, price, stockQuantity, ITEM_ID) 
        values
            (?, ?, ?, ?)
Hibernate: 
    /* insert jpa_book_dionisos198.domain.OrderItem
        */ insert 
        into
            OrderItem
            (count, ITEM_ID, ORDER_ID, orderPrice, ORDER_ITEM_ID) 
        values
            (?, ?, ?, ?, ?)
Hibernate: 
    /* insert jpa_book_dionisos198.domain.Member
        */ insert 
        into
            Member
            (city, name, street, zipcode, MEMBER_ID) 
        values
            (?, ?, ?, ?, ?)
Hibernate: 
    /* insert jpa_book_dionisos198.domain.Order
        */ insert 
        into
            ORDERS
            (member_ID, orderDate, status, ORDER_ID) 
        values
            (?, ?, ?, ?)


아래와 같이 잘 들어간다는 것을 볼 수 있다.

profile
기록을 통해 실력을 쌓아가자

0개의 댓글