전체글101 [JSCODE] 모의면접 스터디 회고 스터디 참여 계기okky를 둘러 보다가 재밌는 스터디 모집 글이 올라 온 것을 확인했다. ‘CS 면접 대비 스터디 모집’이라는 제목이 눈에 들어 왔고 글을 읽어보는데 체계적이고 스터디가 꾸준히 이어와 기수가 존재한 것으로 보였다.모의면접 스터디 과목은 총 4개였으며 아래와 같다.컴퓨터 네트워크 7기데이터베이스 6기운영체제 5기자바 1기나는 이중에서 자바를 선택하였고 자바는 신설된 스터디 같았다. CS 공부를 평소에도 자주 해왔지만 오래된 내용도 있고 정리를 하고도 입밖으로 얘기를 많이 해본적은 없었다.그래서 내 머리속에 있는 자바의 지식도 정리하고 타인에게 말하면서 면접연습을 하기 위해 스터디를 신청했다. 학습 효율성 피라미드를 보면 서로 설명해주면서 학습하는 것이 효과가 좋다는 것을 알 수 있다.아래 .. 2024. 9. 15. [IntelliJ] git 에서 CRLF 개행 문자 차이로 인한 문제 해결하기 목차개요문제의 원인Git의 core.autocrlf 설정추천 방안1. 개요잘 사용하던 IntelliJ 프로젝트 초기 커밋을 하던 중 위와 같은 노란 경고창이 떴다.최근에 업데이트를 진행했었기에 무슨 문제인가 싶었다. 처음엔 안뜨던 warning이 갑자기 떠서 당황스러웠지만, 천천히 읽어보니 Git에서 라인 끝 설정과 관련된 문제를 경고하고 있었다. 이를 이해하고 해결한 방법에 대해 차근차근 알아보자.2. 문제의 원인여러 운영체제에서 작업하다 보면, 같은 프로젝트에서 다른 파일이 CRLF와 LF로 혼용되어 커밋될 수 있다. 이는 팀원 간에 줄 끝 문자로 인해 불필요한 변경이 발생하게 만들거나, 스크립트나 프로그램이 예상치 못한 동작을 하게 만들 수도 있다. CRLF와 LF의 차이CRLF: 윈도우에서는 줄 .. 2024. 8. 22. JPA를 사용하는 이유가 무엇일까? 목차개요순수 JDBCSQL Mapper(JdbcTemplate, Mybatis)JPA(Java Persitence Api)Jdbc vs SQL Mapper vs JPAJPA가 무조건 좋을까?결론1. 개요현재 많은 개발자들이 JPA를 사용하지만 JPA를 사용하는 이유와 장단점에 대해 정리해보려고 한다.먼저 코드를 통해서 눈에 띄는 차이를 살펴보자.2. 순수 JDBC과거에는 객체를 데이터베이스 저장 하려면 위와 같이 복잡한 JDBC API와 SQL을 한땀 한땀 작성해야 했다.3. SQL Mapper(JdbcTemplate, Mybatis)JdbcTemplate이나 Mybatis 같은 SQL Mapper가 등장하면서 위와 같이 개발 코드가 줄었지만 개발자가 SQL을 작성해야 하는 것은 변하지 않았다.4. JP.. 2024. 8. 7. 트랜잭션 전파 옵션을 이용해서 복구하기 목차개요복구 REQUIRE복구 REQUIRE_NEW복구 REQUIRES_NEW 사용X결론1. 개요회원 가입과 로그를 하나의 트랜잭션으로 묶은 기능이 있다. 이때 이력 로그를 DB에 남기는 작업에 문제가 발생해서 가입 자체가 안되는 경우가 발생한다고 하자.‘회원 가입을 시도한 로그를 남기는데, 실패하더라도 회원 가입은 유지되어야 한다.’이 요구사항을 만족하기 위해 REQUIRES_NEW 옵션을 사용해보자.2. 복구 REQUIRE개발자들이 많이 하는 실수 케이스이다.LogRepository 에서 예외가 발생하면 그것은 MemberService 에서 예외를 잡아서 처리하면 될 것 같다라고 생각한다.그러나 내부 트랜잭션에서 rollbackOnly 를 설정하기 때문에 결과적으로 정상 흐름 처리를 해서 외부 트랜잭.. 2024. 8. 3. 스프링 트랜잭션 전파에 대해 알아보자 목차개요전파 기본외부롤백내부롤백결론1. 개요트랜잭션이 둘 이상 있을때 어떻게 동작하는지 자세히 알아보고, 트랜잭션 전파에 대한 개념을 알아보려고 한다. 트랜잭션을 각각 사용하는 것이 아니라 트랜잭션이 이미 진행중인데, 여기에 추가로 트랜잭션을 수행하면 어떻게 될까?기존 트랜잭션이 별도의 트랜잭션을 진행해야 하는지? 아니면 기존 트랜잭션을 그대로 이어 받아서 트랜잭션을 수행해야 하는지? 이런 경우 어떻게 동작할지 결정하는 것을 트랜잭션 전파(propagation)라 한다.2. 전파 기본외부 트랜잭션이 수행중인데, 내부 트랜잭션이 추가로 수행됨.스프링에서 이 경우 외부 트랜잭션과 내부 트랜잭션을 묶어서 하나의 트랜잭션을 만들어준다. 내부 트랜잭션이 외부 트랜잭션에 참여하는 것이다. 이것은 기본동작이고 옵션을.. 2024. 7. 28. @Transactional을 사용할때 어떤 점을 주의할까? 목차개요주의사항1 - 프록시 내부 호출주의사항2 - public 메서드만 트랜잭션 적용주의사항3 - 초기화 시점결론1. 개요보통 트랜잭션을 걸고 싶을때 간단하게 @Transactional 키워드를 자주 사용한다. 이 키워드를 사용하면 스프링의 트랜잭션 AOP가 적용된다.트랜잭션을 적용하다가 많은 개발자들이 이 문제를 실수 하는 경우가 많은데 아래 내용을 천천히 살펴보자.2. 주의사항1 - 프록시 내부 호출 @Transactional 을 적용하면 프록시 객체가 요청을 먼저 받아서 트랜잭션을 처리하고, 실제 객체를 호출해준다.따라서, 트랜잭션을 적용하려면 항상 프록시를 통해서 대상 객체를 호출해야 한다.AOP를 적용하면 스프링은 대상 객체 대신에 프록시를 스프링 빈으로 등록한다. 따라서 스프링은 의존관꼐 주.. 2024. 7. 11. 이전 1 2 3 4 ··· 17 다음