๋ฐ˜์‘ํ˜•

๐Ÿ’พ Database 18

[JPA] ๊ฐ’ ํƒ€์ž…(๊ธฐ๋ณธ๊ฐ’, @Embedded, ๊ฐ’ํƒ€์ž… ์ปฌ๋ ‰์…˜)

๋ชฉ์ฐจ ๊ธฐ๋ณธ๊ฐ’ ํƒ€์ž… ๋‹จ์ˆœํžˆ ๊ฐ’์œผ๋กœ๋งŒ ์‚ฌ์šฉํ•˜๋Š” ๊ธฐ๋ณธ ํƒ€์ž…์ด๋‚˜ ๊ฐ์ฒด์ด๋‹ค. ์‹๋ณ„์ž๊ฐ€ ์—†๊ณ  ๊ฐ’๋งŒ ์žˆ๊ธฐ๋•Œ๋ฌธ์— ๋ณ€๊ฒฝ ์ถ”์  ๋ถˆ๊ฐ€๋Šฅํ•˜๋‹ค. ์ž„๋ฒ ๋””๋“œํƒ€์ž… ์—”ํ‹ฐํ‹ฐ์ด์ง€๋งŒ, ๊ธฐ๋ณธ๊ฐ’์ฒ˜๋Ÿผ ๋‹จ์ˆœํžˆ ๊ฐ’์œผ๋กœ๋งŒ ์‚ฌ์šฉํ•˜๋Š” ๊ฐ์ฒด์ด๋‹ค. = ๋ณ€๊ฒฝ ์ถ”์  ๋ถˆ๊ฐ€๋Šฅํ•˜๋‹ค. @Embeddable : ๊ฐ’์„ ์ •์˜ํ•˜๋Š” ๊ณณ์— ํ‘œ์‹œ @Embedded : ๊ฐ’์„ ์‚ฌ์šฉํ•˜๋Š” ๊ณณ์— ํ‘œ์‹œ ๊ธฐ๋ณธ ์ƒ์„ฑ์ž๋ฅผ ํ•„์ˆ˜๋กœ ๋งŒ๋“ค์–ด์ฃผ์–ด์•ผํ•œ๋‹ค. @Entity public class Member{ @Id @GeneratedValue @Column(name="member_id") private Long id;//๊ฐ’ ํƒ€์ž… private String name;//๊ฐ’ ํƒ€์ž… private String city; private String street; private String zipcode; } cit..

๐Ÿ’พ Database 2022.02.22

[JPA] ํ”„๋ก์‹œ์™€ ์ฆ‰์‹œ๋กœ๋”ฉ, ์ง€์—ฐ๋กœ๋”ฉ / ์˜์†์„ฑ ์ „์ด์™€ ๊ณ ์•„๊ฐ์ฒด

๋ชฉ์ฐจ em.getReference() ๋ฉ”์„œ๋“œ @Entity public class Member{ @Id @GeneratedValue @Column(name="member_id") private Long id; private String name; @ManyToOne @JoinColumn(name="team_id") private Team team; private static void printMember(Member member){ System.out.println("member : " + member); } private static void printMemberAndTeam(Member member){ System.out.println("member : " + member); System.out.pr..

๐Ÿ’พ Database 2022.02.21

[JPA] ์ƒ์†๊ด€๊ณ„ ๋งคํ•‘, ๊ณตํ†ต ์†์„ฑ ๋งคํ•‘

๋ชฉ์ฐจ ๊ฐ์ฒด์˜ ์ƒ์†๊ด€๊ณ„ extends๋กœ ์ง€์›ํ•ด์ค€๋‹ค. @Entity public class Item { @Id @GeneratedValue @Column(name = "item_id") private Long id; private String name; private int price; private int stockQuantity; } @Entity public class Album extends Item{ private String artist; } @Entity public class Movie extends Item{ private String director; private String actor; } @Entity public class Book extends Item{ private String..

๐Ÿ’พ Database 2022.02.21

[JPA] ๋‹ค์–‘ํ•œ ์—ฐ๊ด€๊ด€๊ณ„ ๋งคํ•‘(๋‹ค๋Œ€์ผ, ์ผ๋Œ€์ผ, ๋‹ค๋Œ€๋‹ค)

๋ชฉ์ฐจ ๋‹ค๋Œ€์ผ / N:1 / @ManyToOne / N์ด ์ฃผ์ธ์ธ ๊ฒฝ์šฐ ์™ธ๋ž˜ํ‚ค๊ฐ€ ์žˆ๋Š” ์ชฝ์ด ์ฃผ์ธ N์ด ์ฃผ์ธ : @ManyToOne, @JoinColumn(name = "~") (์–‘๋ฐฉํ–ฅ์ธ ๊ฒฝ์šฐ) 1์ด ์„œ๋ธŒ : @OneToMany(mappedBy = "~") ์ผ๋Œ€๋‹ค / 1:N / @OneToMany / 1์ด ์ฃผ์ธ์ธ ๊ฒฝ์šฐ ์™ธ๋ž˜ํ‚ค๊ฐ€ ์žˆ๋Š” ์ชฝ์ด ์ฃผ์ธ...์ด์–ด์•ผํ•˜๋Š”๋ฐ ๊ฐ์ฒด์™€ ํ…Œ์ด๋ธ”์˜ ์ฐจ์ด ๋•Œ๋ฌธ์— ๋ฐ˜๋Œ€ํŽธ ํ…Œ์ด๋ธ”์˜ ์™ธ๋ž˜ํ‚ค๋ฅผ ๊ด€๋ฆฌํ•˜๋Š” ํŠน์ดํ•œ ๊ตฌ์กฐ 1์ด ์ฃผ์ธ : @OneToMany, @JoinColumn(name = "~") (์–‘๋ฐฉํ–ฅ์ธ ๊ฒฝ์šฐ) N์ด ์„œ๋ธŒ : @ManyToOne, @JoinColumn(name = "~", insertable = false, updatable = false) (์‚ฌ์šฉํ•˜์ง€๋ง์ž) ๋‹จ์ ! - ์—”ํ‹ฐํ‹ฐ๊ฐ€ ..

๐Ÿ’พ Database 2022.02.21

[JPA]์˜์†์„ฑ ๊ด€๋ฆฌ : ๋‚ด๋ถ€ ๋™์ž‘ ๋ฐฉ์‹

๋ชฉ์ฐจ ์˜์†์„ฑ ์ปจํ…์ŠคํŠธ? ์˜์†์„ฑ ์ปจํ…์ŠคํŠธ๋Š” ๋…ผ๋ฆฌ์ ์ธ ๊ฐœ๋…์ด๋‹ค. ์—”ํ‹ฐํ‹ฐ๋งค๋‹ˆ์ €๋ฅผ ํ†ตํ•ด์„œ ์˜์†์„ฑ ์ปจํ…์ŠคํŠธ์— ์ ‘๊ทผํ•œ๋‹ค. - J2EE ๊ฐ™์€ ํ™˜๊ฒฝ ์—”ํ‹ฐํ‹ฐ๋งค๋‹ˆ์ €์™€ ์˜์†์„ฑ ์ปจํ…์ŠคํŠธ๊ฐ€ 1:1 ๊ด€๊ณ„. ์—”ํ‹ฐํ‹ฐ๋งค๋‹ˆ์ € ์•ˆ์— ์˜์†์„ฑ ์ปจํ…์ŠคํŠธ๊ฐ€ 1๊ฐœ ์žˆ๋‹ค. - ์Šคํ”„๋ง ํ”„๋ ˆ์ž„์›Œํฌ ๊ฐ™์€ ์ปจํ…Œ์ด๋„ˆ ํ™˜๊ฒฝ ์—”ํ‹ฐํ‹ฐ๋งค๋‹ˆ์ €์™€ ์˜์†์„ฑ ์ปจํ…์ŠคํŠธ๊ฐ€ 1:N ๊ด€๊ณ„. ์—ฌ๋Ÿฌ ์—”ํ‹ฐํ‹ฐ๋งค๋‹ˆ์ €๋ฅผ ํ†ตํ•ด 1๊ฐœ์˜ ์˜์†์„ฑ ์ปจํ…์ŠคํŠธ์— ์ ‘๊ทผํ•œ๋‹ค. ์˜์†์„ฑ ์ปจํ…์ŠคํŠธ ๊ตฌ์กฐ 1. Mapํ˜•ํƒœ์˜ 1์ฐจ ์บ์‹œ ๊ณต๊ฐ„ : transaction.commit()์ „๊นŒ์ง€ ๊ฐ’์„ ๋ชจ์•„๋†“๋Š”๋‹ค. 2. ์“ฐ๊ธฐ์ง€์—ฐ SQL์ €์žฅ์†Œ : transaction.commit()์ „๊นŒ์ง€ SQL๋ฌธ๋“ค์„ ๋ชจ์•„๋†“๋Š”๋‹ค. em.persist(memberA) ํ•˜๋ฉด - insert SQL๋ฌธ์„ ์“ฐ๊ธฐ์ง€์—ฐ SQL์ €์žฅ์†Œ์— ์ €์žฅํ•˜๊ณ , - member..

๐Ÿ’พ Database 2022.02.21

[JPA] ์—ฐ๊ด€๊ด€๊ณ„ ๋งคํ•‘

๋ชฉ์ฐจ ๋ชฉํ‘œ : "๊ฐ์ฒด์˜ ์ฐธ์กฐ์™€ ํ…Œ์ด๋ธ”์˜ ์™ธ๋ž˜ํ‚ค๋ฅผ ๋งคํ•‘" ์‹œ๋‚˜๋ฆฌ์˜ค - ํšŒ์›๊ณผ ํŒ€์€ ๋‹ค๋Œ€์ผ ๊ด€๊ณ„์ด๋‹ค. - N๋ช…์˜ ํšŒ์›์€ 1๊ฐœ์˜ ํŒ€์— ์†Œ์†๋  ์ˆ˜ ์žˆ๋‹ค. - 1๊ฐœ์˜ ํŒ€์€ N๋ช…์˜ ํšŒ์›์„ ๊ฐ€์งˆ ์ˆ˜ ์žˆ๋‹ค. ๊ฐ์ฒด๋ฅผ ํ…Œ์ด๋ธ”์— ๋งž์ถ”์–ด ๋ชจ๋ธ๋ง : ์™ธ๋ž˜ํ‚ค๋ฅผ ๊ทธ๋Œ€๋กœ ๊ฐ์ฒด์— ๊ตฌํ˜„ Team team = new Team(); team.setName("TeamA"); em.persist(team); Member member = new Member(); member.setName("member1"); member.setTeamId(team.getId());//โญโญโญ ์‹๋ณ„์ž ์ €์žฅ em.persist(member); Member findMember = em.find(Member.class, member.getId()); Team findT..

๐Ÿ’พ Database 2022.02.20

[JPA] Java Persistence API ๋“ฑ์žฅ๋ฐฐ๊ฒฝ, ์‚ฌ์šฉ๋ฐฉ๋ฒ•

๋ชฉ์ฐจ JPA ๋“ฑ์žฅ๋ฐฐ๊ฒฝ [MyBatis] ๋™์ž‘์›๋ฆฌ, ์‚ฌ์šฉ๋ฐฉ๋ฒ• ์ •๋ฆฌ ๋ชฉ์ฐจ MyBatis ๋“ฑ์žฅ๋ฐฐ๊ฒฝ [JDBC] ์‚ฌ์šฉ๋ฐฉ๋ฒ• JDBC : JAVA DataBase Connectivity ๊ธฐ์กด ์ž๋ฐ”์—์„œ๋Š” DB๋ฅผ ์กฐ์ž‘ํ•˜๊ธฐ ์œ„ํ•ด์„œ JDBC API๋ฅผ ์‚ฌ์šฉํ–ˆ๋‹ค. JDBC๋Š” ๋ฐ์ดํ„ฐ๋ฒ ์ด์Šค ์ข…๋ฅ˜์— ์ƒ๊ด€์—†์ด JDBC๋งŒ ์•Œ๋ฉด ์–ด๋–ค ๋ฐ์ดํ„ฐ๋ฒ ์ด์Šค๋ฅผ.. lotuus.tistory.com JDBC์—์„œ MyBatis๋กœ ๋„˜์–ด์˜ค๋ฉด์„œ ์ผ์ •๋ถ€๋ถ„ ํŽธ๋ฆฌํ•ด์กŒ์ง€๋งŒ ์•„์ง๋„ ๋ถˆํŽธํ•จ์€ ์กด์žฌํ–ˆ๋‹ค 1. ๊ฐ์ฒด๋งˆ๋‹ค ๋ฐ˜๋ณต๋˜๋Š” CRUD, ๋งตํ•‘์ฝ”๋“œ ์ž‘์„ฑ @Mapper @Repository public interface MemberRepository { @Insert("insert into member(name, age) values(#{name}, #{age})") @Op..

๐Ÿ’พ Database 2022.01.28

[MyBatis] ๋™์ž‘์›๋ฆฌ, ์‚ฌ์šฉ๋ฐฉ๋ฒ• ์ •๋ฆฌ

๋ชฉ์ฐจ MyBatis ๋“ฑ์žฅ๋ฐฐ๊ฒฝ [JDBC] ์‚ฌ์šฉ๋ฐฉ๋ฒ• JDBC : JAVA DataBase Connectivity ๊ธฐ์กด ์ž๋ฐ”์—์„œ๋Š” DB๋ฅผ ์กฐ์ž‘ํ•˜๊ธฐ ์œ„ํ•ด์„œ JDBC API๋ฅผ ์‚ฌ์šฉํ–ˆ๋‹ค. JDBC๋Š” ๋ฐ์ดํ„ฐ๋ฒ ์ด์Šค ์ข…๋ฅ˜์— ์ƒ๊ด€์—†์ด JDBC๋งŒ ์•Œ๋ฉด ์–ด๋–ค ๋ฐ์ดํ„ฐ๋ฒ ์ด์Šค๋ฅผ ์‚ฌ์šฉํ•˜๋”๋ผ๋„ ์ผ๊ด€๋œ ์ฝ”๋“œ๋กœ ์ž‘์„ฑํ•  lotuus.tistory.com ๊ธฐ์กด์˜ JDBC API๋ฅผ ๋ณด๋ฉด DBMS์™€ ์—ฐ๋™ํ•˜๊ณ  ๊ฒฐ๊ณผ๋ฅผ ์–ป์–ด์˜ค๊ธฐ์œ„ํ•œ ์ค€๋น„์šด๋™์— ๋Œ€ํ•œ ์ฝ”๋“œ๊ฐ€ ์ ˆ๋ฐ˜์ด๋‹ค. ์—ฌ๊ธฐ์„œ ๋น„์ฆˆ๋‹ˆ์Šค ๋กœ์ง์ด ์ถ”๊ฐ€๋œ๋‹ค๋ฉด ์ฝ”๋“œ๊ฐ€ ๋” ๋ณต์žกํ•ด์ง€๋Š” ๊ฒƒ์€ ๋ฌผ๋ก ์ด๊ณ , ํ•œ ํŒŒ์ผ ์•ˆ์—์„œ ๋„ˆ๋ฌด ๋งŽ์€ ์—ญํ• ์„ ํ•ด๋‚ด์•ผํ•œ๋‹ค (DB์—ฐ๊ฒฐ.. DB๊ฒฐ๊ณผ๊ฐ’ ์ฒ˜๋ฆฌ... ResultSet๊ณผ ๊ฐ์ฒด ๋งตํ•‘.. ๊ฐ์ฒด๋ฅผ ๊ฐ€์ง€๊ณ  ๋น„์ฆˆ๋‹ˆ์Šค๋กœ์ง ๊ตฌํ˜„...) ๋˜ํ•œ ์ด ์—ฐ๊ฒฐํ•˜๋Š” ์ฝ”๋“œ๊ฐ€ ๋‹ค๋ฅธ ํŒŒ์ผ์—์„œ๋„ ์ค‘๋ณต๋˜์–ด ๋‚˜ํƒ€๋‚˜๊ฒŒ๋œ๋‹ค..

๐Ÿ’พ Database 2022.01.27

[JDBC] ์‚ฌ์šฉ๋ฐฉ๋ฒ•

JDBC : JAVA DataBase Connectivity ๊ธฐ์กด ์ž๋ฐ”์—์„œ๋Š” DB๋ฅผ ์กฐ์ž‘ํ•˜๊ธฐ ์œ„ํ•ด์„œ JDBC API๋ฅผ ์‚ฌ์šฉํ–ˆ๋‹ค. JDBC๋Š” ๋ฐ์ดํ„ฐ๋ฒ ์ด์Šค ์ข…๋ฅ˜์— ์ƒ๊ด€์—†์ด JDBC๋งŒ ์•Œ๋ฉด ์–ด๋–ค ๋ฐ์ดํ„ฐ๋ฒ ์ด์Šค๋ฅผ ์‚ฌ์šฉํ•˜๋”๋ผ๋„ ์ผ๊ด€๋œ ์ฝ”๋“œ๋กœ ์ž‘์„ฑํ•  ์ˆ˜ ์žˆ๋‹ค. JDBC ์‚ฌ์šฉ๋ฐฉ๋ฒ• 1. JDBC DRIVER ๋กœ๋“œ : Driverํด๋ž˜์Šค๋ฅผ JVM์— ๋กœ๋”ฉ Class.forName(driver); 2. DB ์—ฐ๊ฒฐ : Driver๊ฐ์ฒด๋ฅผ ๋‹ค๋ฃจ๋Š” DriverManager๋ฅผ ํ†ตํ•ด DB์—ฐ๊ฒฐ Connection con = DriverManager.getConnection(url, user, password); 3-1. ๋ฐ์ดํ„ฐ ์‚ฝ์ž… String insertSql = "INSERT INTO member(name, age) VALUES (?,..

๐Ÿ’พ Database 2022.01.26

[MyBatis] String์„ ๋„˜๊ฒผ์„๋•Œ Out of range value for column ์˜ค๋ฅ˜ ํ•ด๊ฒฐ..?

[OrderPost ํ…Œ์ด๋ธ”] @Getter @ToString public class OrderPost { private Long id; private String orderId; private Long postId; private int count; } @Mapper @Repository public interface OrderRepository { @Select("select * from orderpost") List getOrders(); } ์ฝ”๋“œ์— ๋ฌธ์ œ๊ฐ€ ์—†๋Š”๊ฑฐ๊ฐ™์€๋ฐ.. ์•„๋ž˜์™€ ๊ฐ™์ด ์˜ค๋ฅ˜๊ฐ€ ๋ฐœ์ƒํ–ˆ๋‹ค. (์•„๋‹ˆ ์ด๋ ‡๊ฒŒ ๊ฐ„๋‹จํ•œ ์ฝ”๋“œ์— ๋ฌธ์ œ๋ž„๊ฒŒ ๋ญ๊ฐ€์žˆ์–ด ๋Œ€์ฒด..ใ…œใ…œ) Servlet.service() for servlet [dispatcherServlet] in context with path [] thre..

๐Ÿ’พ Database 2022.01.25
๋ฐ˜์‘ํ˜•