์ผ | ์ | ํ | ์ | ๋ชฉ | ๊ธ | ํ |
---|---|---|---|---|---|---|
1 | ||||||
2 | 3 | 4 | 5 | 6 | 7 | 8 |
9 | 10 | 11 | 12 | 13 | 14 | 15 |
16 | 17 | 18 | 19 | 20 | 21 | 22 |
23 | 24 | 25 | 26 | 27 | 28 | 29 |
30 | 31 |
- Import
- eport
- ์ฐธ๊ณ ๋ธ๋ก๊ทธ
- JS #ํ๋ก์ ํธ
- ํผํ
- async
- Porject
- ajax
- json
- ๊ฒ์
- promise
- await
- slow and steady
- https://m.blog.naver.com/tt2t2am1118/221010125300
- database
- addEventListener
- ๋๊ธฐ
- js
- setTimeout()
- ๋น๋๊ธฐ
- object
- mysql
- Project
- https://youtube.com/playlist?list=PLuHgQVnccGMA5836CvWfieEQy0T0ov6Jh&si=FTaYv8m21EhO-A2K
- prj
- db
- webpack
- execCommand
- callback
- sql
- Today
- Total
C-log
6week ๋ณธ๋ฌธ
DAO(Data Access Object)
Config
Spring JDBC๋ฅผ JPA/Hibernate๋ก ๋์ฒดํ๋ ๋ฐฉ๋ฒ์ ์ค๋ช ํ ๊ฒ์ด๋ค. pom.xml์์ ์๋์ ๊ฐ์ด Maven์ ์ถ๊ฐํ๋ฉด ๋๋ค.
<dependency>
<groupId>org.springframework</groupId>
<artifactId>spring-orm</artifactId>
<version>${org.springframework-version}</version>
</dependency>
<dependency>
<groupId>javax.persistence</groupId>
<artifactId>javax.persistence-api</artifactId>
<version>2.2</version>
</dependency>
<dependency>
<groupId>org.hibernate</groupId>
<artifactId>hibernate-core</artifactId>
<version>5.6.15.Final</version>
</dependency>
JPA์ ๋ง๊ฒ dao-context.xml ์ถ๊ฐ ๋ฐ ๋ณ๊ฒฝํ๊ธฐ
์๋ ์ฝ๋๋ Spring์์ JPA(Java Persistence API)๋ฅผ ์ฌ์ฉํ๋ ๋ฐ ํ์ํ ํธ๋์ญ์ ๊ด๋ฆฌ๋ฅผ ์ค์ ํ๋ค. dao-context.xml์ ์์ ํด๋ณด๋ฉด ์๋์ ๊ฐ๋ค. ์ฐธ๊ณ ๋ก dao-context.xml์ ๋ฐ์ดํฐ ์ก์ธ์ค ๋ ์ด์ด์ ์ค์ ์ ์ ์ํ๊ณ ๊ด๋ฆฌํ๋ ๋ฐ ์ฌ์ฉ๋๋ค.
<bean id="transactionManager"
class="org.springframework.orm.jpa.JpaTransactionManager">
<property name="entityManagerFactory" ref="entityManagerFactory" />
</bean>
<tx:annotation-driven />
<tx:annotation-driven>์ @Transactional ์ด๋ ธํ ์ด์ ์ ์ฌ์ฉํ์ฌ ๋ฉ์๋๋ ํด๋์ค์ ํธ๋์ญ์ (ํธ๋์ญ์ ์ ๋ฐ์ดํฐ๋ฒ ์ด์ค์์ ์ํ๋๋ ์์ ์ ๋จ์๋ฅผ ๋ํ๋ธ๋ค.)์ ์ค์ ํ ์ ์๋๋ก ์ง์ํ๋ค. ์ด๋ฅผ ํตํด ๊ฐ๋ฐ์๋ ํธ๋์ญ์ ์ ๋ฒ์์ ๊ด๋ฆฌ ๋ฐฉ๋ฒ์ ๋์ฑ ๋ช ํํ๊ฒ ํํํ ์ ์๋ค. ์ด๋ ์ผ๋ฐ์ ์ผ๋ก ์๋น์ค ๊ณ์ธต์ด๋ ๋ฐ์ดํฐ ์ก์ธ์ค ๊ณ์ธต์์ ์ฌ์ฉ๋๋ฉฐ ํน์ ๋ฉ์๋๊ฐ ๋ฐ์ดํฐ๋ฒ ์ด์ค ์์ ์ ์์์ ์ผ๋ก ์ฒ๋ฆฌํ๋๋ก ๋ณด์ฅํ๋ค.
Entity Class ๋ง๋ค๊ธฐ
DB์ ์ฐ๊ฒฐ๋์ด ์๋ Entity table๊ณผ ์ฐ๊ฒฐ์ ํ๋ ์ญํ ์ ํ๋ class ๋ง๋ค์ด ๋ณผ ๊ฒ์ด๋ค. ํด๋น Entity class๋ Offer.java์ ์ถ๊ฐ๋ฅผ ํ ๊ฒ์ด๋ค.
@Entity
@Table(name = "offers")
๋ฐ๋ผ์ ํ์ฌ offersํ ์ด๋ธ๊ณผ ์ฐ๊ฒฐ์ ํ ๊ฒ์ด๋ค. ๊ทธ๋ฆฌ๊ณ ์ฐ๊ฒฐ๋ ํ ์ด๋ธ๋ก ๋ถํฐ id๋ฅผ ๊ฐ์ง๊ณ ์ฌ ๊ฒ์ด๋ค. ์๋์ ๊ฐ์ด ์์ฑํ๋ฉด ๋๋ค.
@Id
@GeneratedValue(strategy = GenerationType.IDENTITY)
์ด๋ ๊ฒ id๋ฅผ ์ง์ ํ์ง๋ง ํ ์ด๋ธ์ column๋ ์ง์ ํ ์ ์๋ค. @Column(name="id")์ ๊ฐ์ด ์์ฑํ๋ฉด ๋์ง๋ง ์์ ์์๋ ์ง์ ์ ์ผ๋ก ์์ฑํด์ ์ฌ์ฉํ์ง ์์ผ๋ ํฌ๊ฒ ์ ์ํ ํ์๋ ์์ด ๋ณด์ธ๋ค.
DAO ๋ง๋ค๊ธฐ
์ฐ๋ฆฌ๊ฐ JPA์ ๋ง๊ฒ ์์ ํ๋ ์ฝ๋์์ <tx:annotation-driven>๋ @Transactional ์ด๋ ธํ ์ด์ ์ ์ฌ์ฉํ์ฌ ๋ฉ์๋๋ ํด๋์ค์ ํธ๋์ญ์ ์ ์ค์ ํ ์ ์๋๋ก ์ง์ํ๋ค๊ณ ํ๋ค. ๋ค์ ๋งํด์ @Transactional ์ด๋ ธํ ์ด์ ์ด ์๋ ์ธ๋ถ ํด๋์ค๋ ๋ฉ์๋๋ฅผ ์ฐธ์กฐํ๋ค๋ ๊ฒ์ด๋ค. ์๋ ์ฝ๋๋ @Transactional ์ด๋ ธํ ์ด์ ์ ์ฌ์ฉํด์ dao-context.xml์ ์ค์ ๋ค์ ์ฐธ์กฐํ๊ฒ ๋๋ ๊ฒ์ด๋ค.
@Repository
@Transactional
public class OfferDao {
@PersistenceContext
private EntityManager entityManager;
public Offer getOffer(String name) {
return entityManager.createQuery("SELECT o FROM Offer o WHERE o.name = :name", Offer.class)
.setParameter("name", name)
.getSingleResult();
}
public Offer getOffer(int id) {
return entityManager.find(Offer.class, id);
}
public List<Offer> getOffers() {
return entityManager.createQuery("SELECT o FROM Offer o", Offer.class)
.getResultList();
}
๊ธฐ์กด์ ์๋ dao๋ JDBC๋ฅผ ๊ธฐ์ค์ผ๋ก ์์ฑ๋์์ง๋ง ์์ ์ฝ๋๋ JPA์ ๋ง๊ฒ ๋ณ๊ฒฝ๋ ์ฝ๋์ด๋ค.
์ดํ ๋ฐ์ดํฐ๋ฅผ CUD ์ฒ๋ฆฌ๋ฅผ ํ ์ ์๋ ์ฝ๋๋ ์๋์ ๊ฐ๋ค.
public void insert(Offer offer) {
entityManager.persist(offer);
}
public void update(Offer offer) {
entityManager.merge(offer);
}
public void delete(int id) {
Offer offer = entityManager.find(Offer.class, id);
entityManager.remove(offer);
}
ManyToMany Unidirectional
ManyToMany Unidirectional์ ๋ฐ์ดํฐ๋ฒ ์ด์ค์์ ๋ค๋๋ค ๊ด๊ณ๋ฅผ ํํํ๋ ๋ฐฉ๋ฒ ์ค ํ๋์ด๋ค. ์ด๋ ํ ํ
์ด๋ธ์ ๊ฐ ํ์ด ๋ค๋ฅธ ํ
์ด๋ธ์ ์ฌ๋ฌ ํ๊ณผ ๊ด๋ จ๋ ์ ์๊ณ ๋ฐ๋๋ก ๋ค๋ฅธ ํ
์ด๋ธ์ ๊ฐ ํ๋ ์ฒซ ๋ฒ์งธ ํ
์ด๋ธ์ ์ฌ๋ฌ ํ๊ณผ ๊ด๋ จ๋ ์ ์๋ ๊ด๊ณ๋ฅผ ๋ํ๋ธ๋ค. ManyToMany Unidirectional ๊ด๊ณ์์๋ ์ฃผ๋ก ์ฐ๊ฒฐ ํ
์ด๋ธ์ ์ฌ์ฉํ์ฌ ๋ ์ํฐํฐ ๊ฐ์ ๊ด๊ณ๋ฅผ ์ ์งํ๋ค. ๊ฐ ์ํฐํฐ๋ ์ฐ๊ฒฐ ํ
์ด๋ธ์ ํตํด ๋ค๋ฅธ ์ํฐํฐ์ ์ฌ๋ฌ ํ์ ๋ํ ์ฐธ์กฐ๋ฅผ ๊ฐ์ง๊ฒ ๋๋ค.
๋ค๋ง Unidirectional ๊ด๊ณ์์๋ ํ ์ํฐํฐ๊ฐ ๋ค๋ฅธ ์ํฐํฐ๋ฅผ ์ฐธ์กฐํ ์ ์์ง๋ง ๊ทธ ์ญ์ ์ฑ๋ฆฝํ์ง ์์ผ๋ฏ๋ก ํ์ชฝ ๋ฐฉํฅ์ผ๋ก๋ง ๊ด๊ณ๊ฐ ์ค์ ๋๋ค. ๋ฐ๋ผ์ ํ ์ํฐํฐ๋ฅผ ํตํด ๋ค๋ฅธ ์ํฐํฐ์ ์ ๊ทผํ ์ ์์ง๋ง ๊ทธ ์ญ์ ๊ฐ๋ฅํ์ง ์๋ค.
'๐JAVA > Spring' ์นดํ ๊ณ ๋ฆฌ์ ๋ค๋ฅธ ๊ธ
5week (0) | 2024.04.20 |
---|---|
4week (0) | 2024.04.04 |
3week - MVC (0) | 2024.03.20 |
2week (0) | 2024.03.12 |
OT - 1week (0) | 2024.03.05 |