본문 바로가기

전체 글160

[Spring] JPA 사용 시 프록시 객체 사용 주의점 프록시 객체는 처음 사용할 때 한 번만 초기화 프록시 객체를 초기화 할 때, 프록시 객체가 실제 엔티티로 바뀌는 것은 아님. 초기화되면 프록시 객체를 통해서 실제 엔티티에 접근 가능 프록시 객체는 원본 엔티티를 상속받음. 따라서 타입 체크 시 주의해야함 (==으로 비교시 실패. 대신 instance of 사용해서 비교) 영속성 컨텍스트에 찾는 엔티티가 이미 있으면 em.getReference()를 호출해도 실제 엔티티 반환 2023. 12. 5.
[Node] class 혹은 function의 file path를 찾아보자 가장 쉬운 방법은console.log(__filename);console.log(__dirname); __filename과 __dirname을 이용해 찾는 것이다. 하지만 이 방법은 그 class와 function의 내부에 직접적으로 선언해주어야하며, 만약 해당 class나 function을 export해서 외부에서 써야하는 상황이라면 __filename과 __dirname을 이용해서는 알 수가 없다. 외부에서 __filename과 __dirname을 사용하면 외부의 파일 경로가 나오게 된다.따라서 이는 모든 상황에서 적용될 수 없으며, 알고자 하는 class나 function을 반드시 건드려야하는 큰 단점이 있다.(사실상 쓸 수 없음) 실제로 광범위하게 적용할 수 있는 방법에는 3가지 정도가 있다. 1.. 2023. 11. 16.
... SWC 오픈소스에 참여할 수 있는 기회를 얻게 되었다. 아... 음 근데 솔직히 일단 잘 모르겠다. (진짜 모르겠단 뜻ㅋㅋ) 어쩐담? 근데 꼭 해내고 싶다. 일단 Rust 언어의 장벽이 다소 크게 느껴진다. founder 분은 크게 급하지 않으니 천천히 하라고 하셨지만, 정말 모르겠다. 혼란스러운데 이런 좋은 기회를 놓치고 싶지는 않다. 원래 지금까지 뭐든 처음부터 쉬운건 없었긴 한데, 성급하게 기회를 잡은 것일지도 모르겠다. 그렇지만 정말, 정말로 잡고 싶고 성공시키고 싶은 기회이기도 하다. 깨달았다. Rust는 이제 메이저 언어라는 것을. 제트브레인에서 만든 Rust IDE가 있다는 사실을 알았다. 마이너한 언어는 전용 IDE를 만들어주지 않는다. 제트브레인이 인정한 언어..!! 꼭 컨트리뷰션에 성공.. 2023. 11. 13.
[TypeScript] Decorator를 이용한 코드 변경 class TestClass { test() { console.log('test!'); } } 위와 같은 클래스가 존재할 때, test() 메소드를 실행시키면 test! 가 터미널에 찍힐 것이다. 이를 test? 로 출력하기 위해 데코레이터로 코드를 바꾸어 실행 결과를 바꿀 수 있다. function Test(target: any, key: string, descriptor: PropertyDescriptor) { const stringified = String(descriptor.value); const matches = stringified.match(/\{([^}]+)\}/); const extracted = matches[1].replace('!', '?'); const execute = new .. 2023. 11. 7.
[Spring] Contrainerless 스프링부트는 Contrainerless다. Contrainerless라는 말을 이해하기에 앞서서 Serverless라는 말을 한 번 들여다볼 필요가 있다. 트렌디한 단어인 Serverless는 개발자라면 누구나 한 번쯤 들어봤을 것이다. 이제는 백엔드를 넘어서 프론트엔드에도 Serverless 바람이 불고 있는 추세다. 일부는 Serverless라는 말이 '서버가 없다'라는 말로 직역하곤 한다. 정확히는 틀린 말이다. Serverless여도 실제로 서버는 존재한다. 애초에 서버가 없이 코드가 돌아갈 수 있을리가 만무하다. 다만, 사용자의 입장에서는 마치 서버가 없는 것처럼 동작하기에 Serverless인 것 뿐이다. 따라서 "관리할 필요가 없다"라고 해석하는 것이 더 옳다. 예를 들어, AWS Lambd.. 2023. 10. 25.