java

데이터 무결성을 관리하는 데 있어서 트랜잭션 매니저는 자바 애플리케이션에서 매우 중요한 역할을 합니다. 이번 포스팅에서는 자바의 기본 트랜잭션 매니저 인터페이스와 그 구현체들을 알아보겠습니다. 트랜잭션 매니저란? 트랜잭션 매니저는 여러 데이터베이스 작업이 하나로 묶일 수 있도록 관리해주는 구성 요소입니다. 이는 모든 작업이 성공적으로 완료되거나, 하나라도 실패할 경우 전체 작업을 원상태로 되돌리는 'All or Nothing'의 원칙을 보장합니다. 자바에서는 주로 JTA(Java Transaction API)를 이용하여 트랜잭션을 관리합니다. 스프링과 트랜잭션 매니저 스프링 프레임워크에서는 더 편리하게 트랜잭션을 관리할 수 있는 추상화된 트랜잭션 매니저를 제공합니다. PlatformTransactionM..
· 레퍼런스
Finally 블록에서 예외가 발생하면 어떻게 되나요? 자바에서, try-catch에서 finally 블록 내에서 예외가 발생할 때의 동작은, try-catch 블록의 예외 처리와 약간 다릅니다. [Try-Catch 블록의 예외] 정상적인 플로우가 중지됩니다. 예외 유형과 일치하는 catch 블록이 있다면, 해당 블록 내의 코드가 실행됩니다. 이를 통해 예외를 처리할 수 있습니다. catch 블록이 완료되거나 어떤 catch 블록과도 일치하지 않으면 finally 블록의 코드가 실행됩니다. [Finally 블록의 예외] 원래의 예외가 중지됩니다. 이는 원래의 예외가 메서드 호출자에게 전달되지 않는 것을 의미합니다. finally 블록에서 던진 예외가 호출자에게 전파되는 새로운 예외가 됩니다. [키 포인트..
· 레퍼런스
Join은 무엇인가요? Join은 여러 테이블의 데이터를 결합하기 위한 개념입니다. 공유 field를 기반으로 서로 다른 테이블에서 관련 정보를 검색할 수 있습니다. 다음과 같은 데이터베이스가 있다고 가정합시다: 고객 테이블은 이름, ID와 같은 고객 정보를 저장합니다. 주문 테이블은 고객 ID(고객 테이블과 연결된)를 포함한 주문 정보를 저장합니다. 완전한 정보를 위해, 고객 정보를 주문 정보와 결합해 보여주길 원할 것입니다. 이때 조인을 사용합니다. 조인에는 여러 종류가 있습니다: Inner Join: 가장 일반적인 조인입니다. 두 테이블 모두에 포함된 내용만 반환합니다. Left Join: 왼쪽 테이블의 모든 행과 오른쪽 테이블의 일치하는 행이 포함됩니다. 일치하지 않는 오른쪽 테이블의 행은 nul..
· 레퍼런스
HashMap은 내부에서 어떻게 동작하는가? HashMap은 Map 인터페이스의 해시테이블을 기반으로 한 구현입니다. 이 구현은 모든 map 연산을 제공하고, null 값과 null 키를 허용합니다. 이 클래스는 map의 순서를 보장하지 않습니다. Java HashMap은 null 키와 null 값을 허용합니다. HashMap은 순서가 지정된 컬렉션이 아닙니다. 키 집합을 통해 HashMap을 반복할 수는 있지만, HashMap에 추가되는 순서를 보장하지는 않습니다. HashMap은 비동기화되고 null 값을 허용한다는 점을 제외하면 Hashtable과 거의 유사합니다. HashMap은 맵 엔트리를 저장하기 위해 내부 클래스인 Node를 사용합니다. HashMap은 버킷 또는 빈(bin)이라고 불리는 여..
· 레퍼런스
ChatGPT에게 실생활 시나리오를 포함하여 Java Streams API를 가르쳐 달라고 부탁했습니다. 이 글에서 ChatGPT가 얼마나 잘 해냈는지 보실래요? 기본 직원 클래스 만들기 Prompt 1: create an employee class with multiple data fields, make sure to include a list, a map, dates and numbers along with Boolean and string. (list, map, dates와 numbers, boolean, string을 포함한 여러 데이터 필드로 직원 클래스를 만들어 줘) import java.util.Date; import java.util.HashMap; import java.util.List;..
· 레퍼런스
Topic 5: Hibernate/Spring-data Jpa/Database(SQL or NoSQL) 이 토픽에서는 Hibernate JPA 프레임워크가 등장하는 데이터 계층을 다룹니다. 면접관이 데이터베이스 담당자라면 그에 관련해 더 깊이 물어볼 수 있습니다. [토픽] JPA 레파지토리 엔티티들의 관계 SQL 쿼리 관계형과 비관계형 DB 개념 DB에서의 CRUD 연산 join, indexing, procs, functions [질문] SQL과 NoSQL의 차이는 무엇인가요? 데이터베이스의 샤딩이 무엇인가요? JPA란 무엇인가요? 부모-자식 관계란 무엇인가요? 조인이란 무엇인가요? 관련된 아티클1, 아티클2 Topic 6: 코딩 자바 코딩 토픽에서는 스트림 API를 사용하여 코드를 작성하는 것이 중요하..
· 이것저것
지금 참가하고 있는 개발자 모임에서 코드트리와 협업하는 이벤트가 생겼습니다. 솔직한 후기 글만 작성하면 무료로 체험할 수 있다는 말에 얼른 신청을 하였습니다. 꼭 코딩테스트를 위한 준비라기보다는 부족했던 알고리즘 지식을 조금 더 보충할 수 있는 좋은 기회가 될 거라 기대하였습니다. 코드트리는 어떤 사이트인가요? 코드트리는 알고리즘 공부나 코딩테스틀 위한 학습 사이트입니다. 사이트에 들어가보면 가장 먼저 커리큘럼이 소개되어 있습니다. 총 6개의 레벨로 구성되어 있습니다. 여기서 1레벨은 무료로 학습할 수 있으니 결제가 고민된다면 한 번 체험해 보고 결정하시는 것을 추천드립니다. 어떤 커리큘럼을 고를지 고민돼요 이렇게 레벨이 많으면 좋긴 한데, 지금 내 실력에 어떤 커리큘럼을 공부하면 좋을까 고민이 되더라구..
· 레퍼런스
면접을 통과한다는 것은 일반적으로 두 번의 씨름을 통과함을 의미합니다. HR과의 면담은 보통은 더 쉽습니다. 대부분의 사람들이 어려움을 겪는 것은 기술 면접입니다. 특히 대기업과 IT 회사는 일반적으로 인터뷰 하나당 약 1시간을 확보합니다. 자바는 배울 것이 많은 방대한 주제입니다. 자바 외에도, 면접관들은 여러분의 프로젝트, 아키텍처, 클라우드 컴퓨팅, 쿠버네티스 등에 대해 물어볼 것입니다. 다룰 것이 너무 많아요! 🤮 그래서 기본기를 잘 익히고 코딩 실력을 연습하는 데 집중해야 합니다. 각 주제를 철저히 다루면서 차근차근 진행해 나가도록 하겠습니다. 이제 1시간의 면접을 시작한다고 가정하겠습니다. 각 주제에 대해 8~10분을 배정해 면접을 진행하고, 면접관으로서 어떤 질문을 할 것인지 알아보겠습니다...
다 사용하고 난 자원을 반납하기 위해서 어떤 방법을 채택하시나요? 혹시, try-catch-finally 구문을 사용하지는 않으신가요? 맞다면, 축하드립니다! 더 간편한 방법을 사용할 수 있는 기회를 잡으셨습니다! try-catch-finally를 사용한다면 사용 후에 반납해야 하는 자원들은, 대부분 close 형태의 메서드를 가지고 있습니다. 사용 후에 자원을 해제하지 않는다면, 메모리 누수 및 성능 저하의 문제를 일으킬 수 있기 때문에 프로그램이 예상과 다르게 작동할 수 있습니다. 그렇다면 이제, 흔히 사용하는 try-catch-finally 형태의 자원 해제 예시를 살펴볼까요? 어떤가요? 꽤 괜찮아 보이지 않나요? 예외 처리가 발생하든 안하든 상관 없이 항상 자원을 해제할 수 있으니, 나쁘지 않아 ..
자바로 코딩을 하다 보면, 가끔 "Raw type을 사용하지 마라"라는 조언을 듣습니다. 실제로 Effective Java에서도 언급합니다. 그렇다면 Raw type은 무엇이고, 왜 사용하지 않는 것이 좋을까요? Raw type에 대해 알아보려면 우선 Generic type이 무엇인지 알아야합니다. Generic type 이란? Generic 이란 generalize(일반화하다)를 변형시킨 단어로 보입니다. 그래서 '데이터의 타입을 일반화하다' 로 뜻을 유추할 수 있습니다. 클래스와 인터페이스, 메서드를 정의할 때 타입을 지정하지 않고 파라미터로 사용할 수 있게 만듭니다. 이해가 안 된다면 아래 예시를 봅시다. 같은 Box 클래스를 사용하고 있지만, String, Integer, Boolean의 다양한 ..
둘기덕
'java' 태그의 글 목록