Java

    When to use long vs Long in Java

    https://stackoverflow.com/questions/21034955/when-to-use-long-vs-long-in-java The biggest difference I see between long and Long in this context is that Long may be null. If there's a possibility you might have missing values, the Long object will be helpful as null can indicate missing values. If you're using primitives, you'll have to use some special value to indicate missing, which is probab..

    SimpleJdbcInsert

    SimpleJdbcInsert는 테이블 명과 컬럼 명만 명시해주면 쿼리문 없이 쉽게 Insert 쿼리를 처리할 수 있다. final SimpleJdbcInsert simpleJdbcInsert = new SimpleJdbcInsert(jdbcTemplate) .withTableName("테이블명") .usingGeneratedKeyColumns("키 컬럼"); Map params = new HashMap(담을 값의 개수); params.put("컬럼명", 넣을 값); Long id = simpleJdbcInsert.executeAndReturnKey(params).longValue(); 참고 자료 - docs.spring.io/spring-framework/docs/current/javadoc--api/..

    Could not determine java version from '11.0.11'. 에 대한 해결 방법

    java -version // 11 ./gradlew --version // 제목과 똑같은 에러가 발생하며 버전을 확인할 수 없음. 이 경우, Java 버전을 1.8로 낮추면 해결된다. sudo apt-get install openjdk-8-jre sudo update-alternatives --config java java -version // openjdk version "1.8..." 하지만 이렇게 한 뒤, ./gradlew clean build를 수행하면 또 에러가 날 수 있다. (왜냐면 나는 났기 때문!😞) Execution failed for task ':compileJava'. Could not find tools.jar. Please check that .. 그 경우에는 우..

    [우아한 테크코스 Level2 모의 면접 질문 및 답변 재정리 - 2]

    11. Equals + hashcode의 이유? Equals 메서드는 주소값이 다른 객체는 서로 다른 객체로 판단한다. Equals 메서드를 재정의하는 경우 같은 인스턴스 변수를 갖는 객체는 같다는 결과를 얻을 수 있다. Equals에 사용되는 정보가 변경되지 않았다면, 애플리케이션이 실행되는 동안 객체의 hashCode 메서드는 항상 같은 값을 반환한다. 즉, equals가 같다고 판단했으면 hashCode 값은 항상 같다. 하지만 equals가 다르다고 판단했을 때에도 해시코드 값은 같을 수 있다. 또한 같은 값을 가진 객체가 서로 다른 해시값을 갖게 될 수도 있으므로 꼭 재정의해주어야한다. 12. 상태패턴 사용한 방법? (내용 보충하기) 특정 상태에 따라 결과값이 나뉘는 경우 상태패턴을 사용하였다...

    [우아한 테크코스 Level2 모의 면접 질문 및 답변 재정리 - 1]

    모의면접에서 받았던 질문에 대한 답을 다시 정리해보려고 합니다. 1. 추상화 vs 캡슐화 캡슐화: 객체가 내부적으로 어떻게 구현되어있는 지 감추는 것 (숨기는 것) 추상화: 클래스 구현 세부 사항과 동작을 분리하는 것. 2. 숨기면 다 캡슐화가 되나? 지금 생각해보면 이 질문에 대한 대답은 no라고 생각된다. 그 이유는, 숨기기만 하고 외부에서 숨긴 데이터 조작이 가능하다면, 그것은 진정한 캡슐화라고 할 수 없기 때문이다. 우선, 캡슐화를 하는 목적은 객체의 내부 구현을 감추어 내부 구현의 변화가 일어나더라도 협력하는 외부 객체에 변화의 영향이 퍼져나가지 않도록 막기 위함이다. 앞서 말한 것처럼 숨기기만 하고 getter를 통해 데이터를 넘겨주고, 심지어 넘겨받은 데이터를 외부에서 조작 및 변경이 가능하..

    Java는 Call By Reference일까, Call By Value일까?

    감사하게도 우테코 크루 검프께서 많은 레퍼런스를 주셔서 글을 더 다듬었습니다 😉 오늘은, 우테코에서 재밌게 토론했던 주제인 Java는 Call By Reference일까, Call By Value일까에 대해 다루어보고자 한다. 우선, 함수의 호출 방식에는 두 가지가 있다. 첫번째는 Call By Value(값에 의한 호출)이다. 이 방식은 함수 호출 시 전달되는 변수의 값을 복사하여 함수의 인자로 전달한다. 복사된 인자는 함수 안에서 지역 변수의 특성을 가진다. 따라서 함수 안에서 인자의 값이 변경되어도, 외부에는 영향을 끼치지 않는다. 두번째는 Call By Reference(참조에 의한 호출)이다. 이 방식은 인자로 받은 값의 주소를 참조하여 처리한다. (인자로 전달되는 변수의 레퍼런스를 전달한다.)..

    이벤트 소싱이란?

    도입 이번에 우아한 테크코스에서 체스를 구현하는 미션을 진행했었는데, 체스를 DB에 저장하고 게임을 진행할 수 있도록 하는 기능이 요구사항에 있었다. 관건은 체스 게임을 어떻게 DB에 저장하는가? 였는데, 나는 이벤트 소싱이라는 방법을 이용하였다. 하지만 막상 이벤트 소싱이 어떠한 장단점을 갖는지에 대해 알지 못한 채 사용하여서, 이번에 한번 정리해보고자 한다. 이벤트 소싱이란? 이벤트 소싱은 데이터 저장 방법에 대한 것이다. 로직을 처리할 때 일반적으로 결과값을 저장한다. 하지만 그와 달리, 이벤트 소싱은 순차적으로 발생하는 이벤트를 모두 저장한다. 또한 이벤트 소싱 방식은 도메인의 이벤트를 기록하기 때문에 갱신이나 삭제 연산은 수행되지 않는다. 도메인 모델 데이터베이스에는 최종 상태가 아닌, 그동안 ..

    [Spring] @RequestParam과 @ModelAttribute의 차이점

    @RequestParam @GetMapping("/users") public ResponseEntity requestParam(@RequestParam("name") String userName) { return ResponseEntity.ok().body(new User(userName, "email")); } 우선, @RequestParam은 쿼리스트링으로 들어온 파라미터들을 1:1로 받는다. 만약, 파라미터 타입이 잘못 들어오게 되면 400 Bad Request를 보낸다. @ModelAttribute @GetMapping("/insert") public Object requestParam(@ModelAttribute("user") User user, BindingResult bindingResult..

    엘레강트 오브젝트 토론하기

    방학을 맞아 엘레강트 오브젝트를 읽고 있다. (건성으로 읽긴 하지만.. 요즘 하도 글을 잘 안읽다보니 진정 난독이 온 것 같다.) 읽으면서 챕터 정리도 할 겸, 깃허브의 이슈를 이용해 정리하고 있는데, 혹시라도 엘레강트 오브젝트를 읽다 이야기하고 싶거나 의견을 던지고 싶은 부분이 있다면 여기 (클릭 시 이동됨!)로 놀러와 의견을 함께 나눠봅시다!!!!

    [JDBC] PreparedStatement와 Statement의 차이

    PreparedStatement와 Statement의 차이는 뭘까? 우선 둘의 가장 큰 차이점은 캐시 사용 여부이다. Statement를 사용하게 되면 매 쿼리 수행 시 쿼리 문장을 분석한다. -> 쿼리를 컴파일 한다. -> 쿼리를 실행한다.의 과정을 거치게 된다. 반면 PreparedStatement를 사용하게 되면 첫 실행 시에만 세 단계를 거치고, 다음 번 실행 시부터는 캐시에 담아놓고 재사용한다. 따라서 동일한 쿼리를 반복 수행한다면 PreparedStatement가 성능 및 부하 측면에서 낫다. 위 내용은 [Comparison] PreparedStatement 와 Statement에서 발췌한 내용이므로 더 자세한 내용은 해당 링크에서 확인할 수 있습니다아 :)