728x90
728x90

Python Selenium


from selenium import webdriver
from webdriver_manager.chrome import ChromeDriverManager

driver = webdriver.Chrome(ChromeDriverManager().install())
os.makedirs(path, exist_ok=True)

이미지 저장

urlretrieve

JPA


  1. 연관관계가 있는 데이터 변경시에는 기존에 데이터가 있는지 확인하자
  2. @MappedSuperClass abstract
  3. @AttributeOverride,@AttributeOverrides
  4. @AssociationOverride,@AssociationOverrides
  5. 식별자, 비식별자
  6. @IdClass
  7. @EmbeddedId / implements Serializable / method equals / method hasCode Override / Noargs Constructor / public
  8. @JoinColumns / referenceedColumnName
  9. 조인 컬럼 / 조인 테이블
  10. 즉시 로딩 fetch = FetchType.EAGER / 지연 로딩 fetch = FetchType.LAZY
  11. inner join : nullable =false or ManyToOne Option = false <=> outer join : nullable = true
  12. 영속성 전이 : CASCADE
  13. CASCADE TYPE : ALL,PERSIST,MERGE,REMOVE,DETACH,REFRESH
  14. 고아객체 : ORPHAN : orphanRemoval = true
  15. Embedded Type => @Embeddable
  16. 값 타입 불변과 객체
  17. Embedded 값 타입 복사
  18. 값 타입 컬렉션 : @ElementCollection
  19. JPQL
  20. fetch 조인 : join fetch
  21. queryDSL
  22. 벌크연산
728x90

'개발일기' 카테고리의 다른 글

[TIL#11]  (0) 2023.06.13
[TIL#10]  (0) 2023.06.12
[TIL#9]  (2) 2023.06.09
[TIL#7]  (0) 2023.06.02
[TIL #4]  (0) 2023.05.03
728x90

Git


  1. git branch
  2. git add *
  3. git commit -m "메세지"
  4. git push origin 브랜치

Spring Boot


  1. 정적 파일 Resource 경로 설정 -> addResourceHandlers
  2. AOP

JPA


  1. 컬럼이 많을 때는 DynamicUpdate 어노테이션을 사용해 보자
  2. 영속성
  3. 1차 캐싱
  4. 삭제는 remove()
  5. persist()
  6. JPQL 실행시 flush 자동 호출
  7. flush 모드 설정 : FlushModeType.AUTO / FlushModeType.COMMIT - EntityManager setFlushMode() 사용
  8. 준영속성 : 영속성 -> 준영속성 : detach(Entity) 특정엔티티만, close() 종료, clear() 초기화
  9. 병합 : merge() 준영속성 -> 영속성
  10. @Entity : name을 설정하지 않으면 그대로 사용 / 기본 생성자는 필수 / final,enum,interface,inner 에는 사용할 수 없다. 저장할 필드에 final을 사용하면 안된다.
  11. @Table: name 생랴기 Entity 이름 사용 /
  12. @Enumerated : Java enum 매핑 / EnumType.String
  13. @Temporal : 날짜 타입 매핑
  14. @Lob: CLOB, BLOB 을 매핑
  15. 스키마 자동 생성 : 기존 테이블 지우고 다시 생성 / 개발에서만 사용하자
    # application.properties
    spring.jpa.hibernate.ddl-auto=update
    

XML

hibernate.hdm2ddl.auto value="create"

16. sql_show

#application.properties
spring.jpa.hibernate.sql_show=true

XML

hibernate.sql_how value="true"

17. 매핑 전략 변경
- hibernate.ejb.naming_strategy

18. nullable = false : not null 추가
19. length = 10 : 길이 추가
20. 유니크 제약 조건 : @table(name="..", uniqueConstraints={@UniqueConstraint(name="...",columnNames={"...","..."})})
21. @GeneratedValue : 기본 키 생성 전략
22. @Id 매핑 가능한 타입 : 기본 , Wrapper, String, Date, BigDemical, BigInteger
23. IDENTITY 전략 : MySql , postgresql, SQL Server : AUTO_INCREMENT 가 있는 밴더 : @GeneratedValue(strategy=GenerationType.IDENTITY)
24. SEQUENCE 전략: 오라클, postgresql : @SequenceGenerator(name="...",sequenceName="...",initialValue=1,allocationSize=1) +  @GeneratedValue(strategy=GenerationType.SEQUENCE,generator="...")
25. Table 전략 : 키생성 전용 테이블을 만들어 사용 : @TableGenerator(name="...",table="...",pkColumnValue="...",allocationSize=1) +@GeneratedValue(strategy=GenerationType.TALBE,generator="...")
26. Auto 전략 : 자동 : @GeneratedValue(strategy=GenerationType.AUTO)
27. Transient: DB 매핑x
28. Access : JPA 접근 방식 지정
29. @Column : name, nullable , length ,(BigDemical,BigInteger) percision, scale
30. @Colomn 생략지 자바 타입이 기본 타입일 경우를 주의하자
31. @Enumerated : EnumType.ORDINAL enum에 정의된 순서, EnumType.String enum정의된 이름 그대로, 
32. @Temporal: Date,Calendar 등 날짜타입 TemporalType.DATE , TemporalType.TIME, TemporalType.TIMESTAMP, 생략시 Timestamp
33. @Access : 엔티티 접근방식 : AccessType.FIELD 필드 직접 접근, AccessType.PROPERTY 접근자 : 사용 생략시 @Id 위치에 따라 접근
34. 연관 관계
35. 방향 : 단방향, 양방향
36. 다중성: N:1, 1:N, 1:1, N:M
37. OWNER : 양방향으로 만들면 OWNER 를 정해야한다.
38. N:1 단방향 연관관계 : x는 하나의 y , y에는 여러 x, 게시물은 1명의 유저, 유저는 여러개의 게시물
39. x에는 y로 접근하는 필드 존재 , x에서는 y로 접근가능 , y에서는 x로 접근 불가
40. @ManuToOne : optional, fetch, cascade, targetEntity: 연관관계 엔티티 타입
41. @JoinColumn(name="연관관계 테이블 컬럼")
728x90

'개발일기' 카테고리의 다른 글

[TIL #8]  (0) 2023.06.09
[TIL#9]  (2) 2023.06.09
[TIL #4]  (0) 2023.05.03
[TIL #3]  (0) 2023.05.02
[TIL#2]  (0) 2023.04.27
728x90

JPA


  1. dependencies
  • h2
    <dependency>
      <groupId>com.h2database</groupId>
      <artifactId>h2</artifactId>
      <version>2.1.214</version>
      <scope>test</scope>
    </dependency>
  • hibernate
    <dependency>
      <groupId>org.hibernate</groupId>
      <artifactId>hibernate-entitymanager</artifactId>
      <version>5.6.15.Final</version>
    </dependency>
    

- persistence.xml
```xml
<?xml version="1.0" encoding="UTF-8"?>
<persistence version="2.2"
             xmlns="http://xmlns.jcp.org/xml/ns/persistence" xmlns:xsi="http://www.w3.org/2001/XMLSchema-instance"
             xsi:schemaLocation="http://xmlns.jcp.org/xml/ns/persistence http://xmlns.jcp.org/xml/ns/persistence/">

    <!-- EntityManagerFactory 생성 시 unit name과 일치해야 합니다 -->
    <persistence-unit name="com.hiio">
        <properties>
            <!-- 필수 속성 -->
            <!-- DB Driver -->
            <property name="javax.persistence.jdbc.driver" value="org.h2.Driver"/>

            <!-- DB user info -->
            <property name="javax.persistence.jdbc.user" value="hiio"/>
            <property name="javax.persistence.jdbc.password" value="hiio"/>

            <!-- DB url -->
            <property name="javax.persistence.jdbc.url" value="jdbc:h2:file:F:/data/h2/prac"/>
            <!-- Dialect -->
            <property name="hibernate.dialect" value="org.hibernate.dialect.H2Dialect"/>

            <!-- 옵션 -->
            <!-- SQL show -->
            <property name="hibernate.show_sql" value="true"/>

            <!-- SQL 정렬 -->
            <property name="hibernate.format_sql" value="true"/>

            <!-- SQL에 관한 주석 처리 -->
            <property name="hibernate.use_sql_comments" value="true"/>

            <!-- application 실행 시 ddl 전략 -->
            <property name="hibernate.hbm2ddl.auto" value="update"/>
        </properties>

    </persistence-unit>
</persistence>
  • lombok
    <!-- https://mvnrepository.com/artifact/org.projectlombok/lombok -->
    <dependency>
      <groupId>org.projectlombok</groupId>
      <artifactId>lombok</artifactId>
      <version>1.18.26</version>
      <scope>provided</scope>
    </dependency>
  1. Annotation
  • @Entity : 테이블 매핑한다고 알려준다
  • @Table : 매핑할 테이블 정보 / 생략시 class 이름을 매핑
  • @Id : 식별자 필드 / 기본키
  • @Column : 컬럼 매핑
  1. application jpa 순선
  • EntityManagerFactory 생성
  • EntityyManager 생성
  • EntityTransaction 생성
  • 트랜잭션 begin()
  • 로직
  • 트랜잭션 commit()
  • 에러 : rollback()
  • EntityManager close()
  • EntityManagerFactory close()
  1. 로직
  • 등록 EntityManager save + Entity Object
  • find
  • setter 수정
  • em.remove(Entity Object) 삭제
  • createQuery + getResultList
  • Entity Object .class
  1. 문제는 검색쿼리
  • JPQL : Entity Object 를 대상으로 한다.
  • Error
  • No default constructor for entity: 기본 생성자 추가해주기

이클립스


  1. 메모리 늘리기
  • 'Preferences - General - Show heap status'를 체크
  • eclipse.ini 파일을 수정
  • Xms256m -> Xms1024m
728x90
728x90
728x90

+ Recent posts