728x90
728x90

Spring Boot


  1. CORS
@Configuration 
public class WebConfig implements WebMvcConfigurer{
    @Override
    public void addCorsMappings(CorsRegistry registry){
        registry.addMapping("/**").allowedOriginPatterns("*").allowedMethods("*").allowCredentials(true);
    }
{
@Configuration  
public class SecurityConfig{


    @Bean
    public SecurityFilterChain filterChain(HttpSecurity http) throws Exception{
        http.csrf().disable().httpBasic().disable().formLogin().disable().cors().configurationSource(corsConfigurationSource());
        return http.build();
    }

    @Bean
    public CorsConfigurationSource corsConfigurationSource(){
        CorsConfiguration configuration = new CorsConfiguration();
        configuration.addAllowedOrigin("*");
        configuration.addAllowedMethod("*");
        configuration.addAllowedHeader("*");
        UrlBasedCorsConfigurationSource source = new UrlBasedCorsConfigurationSource();
        source.registerCorsConfiguration("/**", configuration);
        return source;
    }


}
  1. addResourceHandler
@Override
public void addResourceHandlers(ResourceHandlerRegistry registry) {
    registry.addResourceHandler("/m/**")
            .addResourceLocations("classpath:/")
            .setCachePeriod(20)
            ;
}
728x90

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

[어렵다어려워] 목표를 세우자!  (0) 2023.06.19
[TIL#11]  (0) 2023.06.13
[TIL #8]  (0) 2023.06.09
[TIL#9]  (2) 2023.06.09
[TIL#7]  (0) 2023.06.02
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

Docker


Install - Unbuntu

# Docker
sudo apt-get update
sudo apt-get install ca-certificates curl gnupg

sudo install -m 0755 -d /etc/apt/keyrings
curl -fsSL https://download.docker.com/linux/ubuntu/gpg | sudo gpg --dearmor -o /etc/apt/keyrings/docker.gpg
sudo chmod a+r /etc/apt/keyrings/docker.gpg

echo "deb [arch="$(dpkg --print-architecture)" signed-by=/etc/apt/keyrings/docker.gpg] https://download.docker.com/linux/ubuntu "$(. /etc/os-release && echo "$VERSION_CODENAME")" stable" | sudo tee /etc/apt/sources.list.d/docker.list > /dev/null

sudo apt-get update
sudo apt-get install docker-ce docker-ce-cli containerd.io docker-buildx-plugin docker-compose-plugin
sudo usermod -aG docker ${USER}

Linux Ubuntu


  1. 그냥 내가 사용자 추가 할때 쓰는 코드
  2. useradd -m user passwd user echo "user ALL=(ALL) NOPASSWD:ALL">>/etc/sudoers

## mariadb conf
[client]  
port = 3306  
default-character-set=utf8

[mysqld]  
#bind-address = 127.0.0.1  
bind-address = 0.0.0.0

key_buffer_size = 512M  
innodb_buffer_pool_size = 512M

init_connect="SET collation_connection=utf8_general_ci"  
character-set-server = utf8  
collation-server = utf8_unicode_ci

[mysql]  
default-character-set=utf8

Spring boot


  1. gradle dependency 추가 : implementation 'org.bgee.log4jdbc-log4j2:log4jdbc-log4j2-jdbc4.1:1.16'
  2. log : log4jdbc.log4j2.properties 추가
log4jdbc.spylogdelegator.name=net.sf.log4jdbc.log.slf4j.Slf4jSpyLogDelegator  
log4jdbc.dump.sql.maxlinelength=0
  1. application.yml 수정
spring.datasource.driverClassName=net.sf.log4jdbc.sql.jdbcapi.DriverSpy  
jdbc:log4jdbc:mariadb://

~~~
  1. logging
  2. logging: level: root: INFO org: hibernate: type: TRACE SQL: INFO jdbc: audit: OFF resultset: OFF resultsettable: INFO sqlonly: OFF sqltiming: INFO connection: OFF
  3. @EntityListeners(AuditingEntityListener.class)
  4. @EnableJpaAuditing

VScode


  1. spring boot args
  • launch.json
"args": "--spring.profiles.active=local"  
728x90

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

[TIL#10]  (0) 2023.06.12
[TIL #8]  (0) 2023.06.09
[TIL#7]  (0) 2023.06.02
[TIL #4]  (0) 2023.05.03
[TIL #3]  (0) 2023.05.02
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

Ubuntu


  1. sudo apt-get install openjdk-11-jdk
  2. 서버 시간 맞추기
  • timedatectl
  • timedatectl list-timezones
  • sudo timedatectl set-timezone Asia/Seoul

Certbot + boot


  1. sudo certbot certonly --standalone
  2. sudo certbot certonly --webroot
  3. return 301 https://$host$request_uri;
  4. openssl pkcs12 -export -in fullchain.pem -inkey privkey.pem -out keystore.p12 -name tomcat -CAfile chain.pem -caname root
    server.ssl.key-store=classpath:keystore.p12
    server.ssl.key-store-type=PKCS12
    server.ssl.key-store-password=내가정한password

React + Spring Boot Set-Cookie


  1. SameSite : None
  2. Secure : true
  3. withCredential
  4. CORS
  5. httpOnly : true
728x90
728x90
728x90

+ Recent posts