<?xml version="1.0" encoding="UTF-8"?>
<rss version="2.0" xmlns:atom="http://www.w3.org/2005/Atom" xmlns:dc="http://purl.org/dc/elements/1.1/">
  <channel>
    <title>Forem: Burak Aykan ÜRER</title>
    <description>The latest articles on Forem by Burak Aykan ÜRER (@burakaykan).</description>
    <link>https://forem.com/burakaykan</link>
    <image>
      <url>https://media2.dev.to/dynamic/image/width=90,height=90,fit=cover,gravity=auto,format=auto/https:%2F%2Fdev-to-uploads.s3.amazonaws.com%2Fuploads%2Fuser%2Fprofile_image%2F117873%2Ffb5f26a9-330a-4675-893e-715e3732068a.jpg</url>
      <title>Forem: Burak Aykan ÜRER</title>
      <link>https://forem.com/burakaykan</link>
    </image>
    <atom:link rel="self" type="application/rss+xml" href="https://forem.com/feed/burakaykan"/>
    <language>en</language>
    <item>
      <title>Forget TDD: Are You Accidentally Practicing Fate-Driven Development (FDD)?</title>
      <dc:creator>Burak Aykan ÜRER</dc:creator>
      <pubDate>Thu, 23 Oct 2025 08:44:21 +0000</pubDate>
      <link>https://forem.com/burakaykan/forget-tdd-are-you-accidentally-practicing-fate-driven-development-fdd-1h5</link>
      <guid>https://forem.com/burakaykan/forget-tdd-are-you-accidentally-practicing-fate-driven-development-fdd-1h5</guid>
      <description>&lt;p&gt;We all talk about methodologies like Test-Driven Development (TDD), Domain-Driven Design (DDD), and Behavior-Driven Development (BDD). But let's be honest: are we truly practicing them, or are we practicing something... else?&lt;/p&gt;

&lt;p&gt;My new site, &lt;a href="https://blabladriven.dev" rel="noopener noreferrer"&gt;blabladriven.dev&lt;/a&gt;, is a hilarious, cynical, and painfully accurate catalog of all the real development methodologies we fall back on when deadlines are tight, specs are hazy, or the universe simply has other plans for our codebase.&lt;/p&gt;

&lt;p&gt;It's time to talk about the anti-patterns we all secretly use.&lt;/p&gt;

&lt;p&gt;A Few of the Most Painful Methodologies&lt;/p&gt;

&lt;p&gt;Here are a few entries from the guide. Which one do you use the most?&lt;/p&gt;

&lt;p&gt;🔮 FDD: Fate-Driven Development&lt;/p&gt;

&lt;p&gt;The belief that the code's success or failure is predetermined by cosmic forces, making effort largely symbolic.&lt;/p&gt;

&lt;p&gt;Core Principle: If the CI/CD pipeline fails three times, it is a sign from the universe to take a break.&lt;/p&gt;

&lt;p&gt;Motto: "We pushed to production. Now we wait for Kismet."&lt;/p&gt;

&lt;p&gt;🐛 WMMD: 'Works on My Machine' Development&lt;/p&gt;

&lt;p&gt;A process that concludes immediately upon seeing the feature successfully execute on the developer’s local environment, regardless of the test suite, staging environment, or user experience.&lt;/p&gt;

&lt;p&gt;Core Principle: My machine is the only machine that truly matters.&lt;/p&gt;

&lt;p&gt;Motto: "It works on my machine. Everything else is an infrastructure problem."&lt;/p&gt;

&lt;p&gt;🧠 IJDS: I Just Did a Google Search Development&lt;/p&gt;

&lt;p&gt;The method of building a complex feature entirely from copy-pasted Stack Overflow snippets and the first two search results.&lt;/p&gt;

&lt;p&gt;Core Principle: Why write 20 lines of code when 5 lines from the internet will do... until it breaks six months later.&lt;/p&gt;

&lt;p&gt;Motto: "I just need to find the right GitHub Gist to fix this."&lt;/p&gt;

&lt;p&gt;🤖 CGDD: The 'Can We Just Use ChatGPT' Development&lt;/p&gt;

&lt;p&gt;The methodology where the requirements gathering, planning, and initial coding phases are entirely outsourced to an AI model, leaving the developer to debug the output.&lt;/p&gt;

&lt;p&gt;Core Principle: AI is better at writing code than I am; I'm better at fixing its mistakes.&lt;/p&gt;

&lt;p&gt;Motto: "It passed the linter, but I have no idea what it does."&lt;/p&gt;

&lt;p&gt;📣 What's Your Flavor of "Bla-Bla"?&lt;/p&gt;

&lt;p&gt;We all have a few of these in our toolkit. It's time to be honest about them.&lt;/p&gt;

&lt;p&gt;Check out the full list of anti-patterns and their core principles (including MeDD: Meeting-Driven Development and NDDD: Non-Developer Driven Development) on the site:&lt;/p&gt;

&lt;p&gt;👉 &lt;a href="https://blabladriven.dev" rel="noopener noreferrer"&gt;The Ultimate Guide to Bla-Bla Driven Development&lt;/a&gt;&lt;/p&gt;

&lt;p&gt;Which of these methodologies dominates your day-to-day life? And more importantly: What is the most ridiculous "Driven Development" anti-pattern you've ever witnessed?&lt;/p&gt;

&lt;p&gt;Share your own in the comments! Let's build the ultimate compendium of developer cynicism.&lt;/p&gt;

</description>
      <category>humor</category>
      <category>programming</category>
      <category>webdev</category>
      <category>career</category>
    </item>
    <item>
      <title>Spring Data JPA | getOne() vs findById() ! Farkları nedir?</title>
      <dc:creator>Burak Aykan ÜRER</dc:creator>
      <pubDate>Wed, 17 Jun 2020 20:38:12 +0000</pubDate>
      <link>https://forem.com/burakaykan/spring-data-jpa-getone-vs-findbyid-farklari-nedir-3g8i</link>
      <guid>https://forem.com/burakaykan/spring-data-jpa-getone-vs-findbyid-farklari-nedir-3g8i</guid>
      <description>&lt;p&gt;&lt;a href="https://res.cloudinary.com/practicaldev/image/fetch/s--QFTVuTtO--/c_limit%2Cf_auto%2Cfl_progressive%2Cq_auto%2Cw_800/https://blog.burakaykan.me/content/images/2020/06/space-grey-ipad-air-with-graph-on-brown-wooden-table-187041.jpg" class="article-body-image-wrapper"&gt;&lt;img src="https://res.cloudinary.com/practicaldev/image/fetch/s--QFTVuTtO--/c_limit%2Cf_auto%2Cfl_progressive%2Cq_auto%2Cw_800/https://blog.burakaykan.me/content/images/2020/06/space-grey-ipad-air-with-graph-on-brown-wooden-table-187041.jpg" alt="Spring Data JPA | getOne() vs findById() ! Farkları nedir?" width="800" height="600"&gt;&lt;/a&gt;&lt;/p&gt;

&lt;p&gt;Spring Data JPA'da getOne() metodu da findById() metodu da bir objeyi getirmek için kullanılabilir. Ancak bu iki metodun çalışma prensibi farklıdır. Bu yazıda bu farklara değineceğim.&lt;/p&gt;




&lt;h2&gt;
  
  
  - getOne()
&lt;/h2&gt;

&lt;p&gt;getOne() metodu verilen id'ye ait objenin referansını döner. Bu metod içeride EntityManager.getReference() metodunu çağırır. &lt;a href="https://docs.oracle.com/javaee/7/api/javax/persistence/EntityManager.html#getReference-java.lang.Class-java.lang.Object-" rel="noopener noreferrer"&gt;Dökümanda&lt;/a&gt; belirtildiği gibi bu metod her zaman database'e gitmeden (lazy fetch) bir proxy döner. İstenen entity'nin database'de bulunmaması durumunda EntityNotFoundException fırlatır.&lt;/p&gt;

&lt;h2&gt;
  
  
  - findById()
&lt;/h2&gt;

&lt;p&gt;Bu metod ise her çağırıldığında gerçekten database'e gider ve objeyi oradan getirir. Bu EAGER yüklenen işlemdir bu sebeple eğer getirmeye çalıştığımız obje DB'de yoksa null dönecektir.&lt;/p&gt;




&lt;h2&gt;
  
  
  Hangisini seçmeliyiz ?
&lt;/h2&gt;

&lt;p&gt;Bu iki metodun arasındaki temel fark performans ile ilgili, Lazy Load olan getOne() JVM'den database'e gitmediği için performans olarak findById()'den daha iyidir.&lt;/p&gt;

&lt;p&gt;İki metodu da kullanmak için uygun durumlar var. Örneğin objeyi getirip başka bir obje ile ilişki kurmasını sağlamak istediğimizde (OneToOne ya da ManyToOne). Ancak örneğin çağırdığımız objenin içerisinde bulunan başka bir objeye erişmeye çalıştığımızda hata alacağız bu gibi durumlarda findById() metodunu kullanmak daha iyi olacaktır.&lt;/p&gt;

&lt;h4&gt;
  
  
  findById kullandığımızda
&lt;/h4&gt;



&lt;div class="highlight js-code-highlight"&gt;
&lt;pre class="highlight plaintext"&gt;&lt;code&gt;    @PostMapping("/findById/{id}")
    public void findByIdCreate(@PathVariable Long id) {
        Employee employee = new Employee();
        employee.setName("MyEmployee");
        Instant start = Instant.now();
        Department department = departmentRepository.findById(id).get();
        Instant end = Instant.now();
        System.out.println(Duration.between(start, end));
        employee.setDepartment(department);
        employeeRepository.save(employee);
    }

&lt;/code&gt;&lt;/pre&gt;

&lt;/div&gt;



&lt;p&gt;insert yapmadan önce select sorgusu ile Departmanı getiriyoruz arkasından insert metodu 0.004S'de çalışıyor.&lt;br&gt;
&lt;/p&gt;

&lt;div class="highlight js-code-highlight"&gt;
&lt;pre class="highlight plaintext"&gt;&lt;code&gt;Hibernate: select department0_.id as id1_0_0_, department0_.name as name2_0_0_ from Department department0_ where department0_.id=?
PT0.004S
Hibernate: insert into Employee (department_id, name) values (?, ?)

&lt;/code&gt;&lt;/pre&gt;

&lt;/div&gt;



&lt;h4&gt;
  
  
  getOne kullandığımızda
&lt;/h4&gt;



&lt;div class="highlight js-code-highlight"&gt;
&lt;pre class="highlight plaintext"&gt;&lt;code&gt;    @PostMapping("/getOne/{id}")
    public void getOneCreate(@PathVariable Long id) {
        Employee employee = new Employee();
        employee.setName("MyEmployee");
        Instant start = Instant.now();
        Department department = departmentRepository.getOne(id);
        Instant end = Instant.now();
        System.out.println(Duration.between(start, end));
        employee.setDepartment(department);
        employeeRepository.save(employee);
    }
&lt;/code&gt;&lt;/pre&gt;

&lt;/div&gt;



&lt;p&gt;ise Departman'ın referansını getirdiği için yani aslında database'e gitmediğimiz için işlem çok daha hızlı gerçekleşir.&lt;br&gt;
&lt;/p&gt;

&lt;div class="highlight js-code-highlight"&gt;
&lt;pre class="highlight plaintext"&gt;&lt;code&gt;PT0.002S
Hibernate: insert into Employee (department_id, name) values (?, ?)
&lt;/code&gt;&lt;/pre&gt;

&lt;/div&gt;



&lt;div class="table-wrapper-paragraph"&gt;&lt;table&gt;
&lt;thead&gt;
&lt;tr&gt;
&lt;th&gt;getOne()&lt;/th&gt;
&lt;th&gt;findById()&lt;/th&gt;
&lt;th&gt;&lt;/th&gt;
&lt;th&gt;&lt;/th&gt;
&lt;th&gt;&lt;/th&gt;
&lt;/tr&gt;
&lt;/thead&gt;
&lt;tbody&gt;
&lt;tr&gt;
&lt;td&gt;Lazy Load ile hedefin referansını getirir&lt;/td&gt;
&lt;td&gt;Verilen id'yi gerçekten getirir (referans değil)&lt;/td&gt;
&lt;td&gt;&lt;/td&gt;
&lt;td&gt;&lt;/td&gt;
&lt;td&gt;&lt;/td&gt;
&lt;/tr&gt;
&lt;tr&gt;
&lt;td&gt;Objenin propert'ilerine erişmek gerekmediğinde oldukça kullanışlı&lt;/td&gt;
&lt;td&gt;Obje tamamen getirildiği için tüm özelliklerine erişilebilir&lt;/td&gt;
&lt;td&gt;&lt;/td&gt;
&lt;td&gt;&lt;/td&gt;
&lt;td&gt;&lt;/td&gt;
&lt;/tr&gt;
&lt;tr&gt;
&lt;td&gt;Objeye erişmek gerektiğinde obje DB'de yoksa EntityNotFoundException hatası fırlatır&lt;/td&gt;
&lt;td&gt;Eğer obje DB'de kayıtlı değilse null döner&lt;/td&gt;
&lt;td&gt;&lt;/td&gt;
&lt;td&gt;&lt;/td&gt;
&lt;td&gt;&lt;/td&gt;
&lt;/tr&gt;
&lt;tr&gt;
&lt;td&gt;Daha iyi performans&lt;/td&gt;
&lt;td&gt;İlave bir DB sorgusu gereklidir&lt;/td&gt;
&lt;td&gt;&lt;/td&gt;
&lt;td&gt;&lt;/td&gt;
&lt;td&gt;&lt;/td&gt;
&lt;/tr&gt;
&lt;/tbody&gt;
&lt;/table&gt;&lt;/div&gt;

&lt;p&gt;&lt;a href="https://www.javacodemonk.com/difference-between-getone-and-findbyid-in-spring-data-jpa-3a96c3ff" rel="noopener noreferrer"&gt;Kaynak&lt;/a&gt; - &lt;a href="https://github.com/burakaykan/getOne-findById" rel="noopener noreferrer"&gt;Github Proje&lt;/a&gt;&lt;/p&gt;

</description>
      <category>java</category>
      <category>springboot</category>
    </item>
    <item>
      <title>Java Validation Annotation'ları</title>
      <dc:creator>Burak Aykan ÜRER</dc:creator>
      <pubDate>Fri, 31 Jan 2020 05:03:59 +0000</pubDate>
      <link>https://forem.com/burakaykan/java-validation-annotation-lari-3m96</link>
      <guid>https://forem.com/burakaykan/java-validation-annotation-lari-3m96</guid>
      <description>&lt;p&gt;Spring-Boot uygulamalarında modellerimizi oluştururken validasyon yapabileceğimiz kullanışlı birkaç kütüphane mevcut bu yazıda bunlardan birinden ve kullanabileceğimiz Annotation'lardan bazılarından söz edeceğim. Java Bean'lerinin doğrulanmasında standart framework olarak kullanılan JSR 380'den faydalanacağız.&lt;br&gt;
Kullanıcıdan alacağımız input'lara validasyon uygulamak oldukça temel bir işlem. Bu inputlara doğrulama yapmak bize büyük kolaylık sağlayacaktır.&lt;/p&gt;
&lt;h3&gt;
  
  
  JSR 380
&lt;/h3&gt;

&lt;p&gt;JSR 380 Bean Validasyonu için bize Java API'si sağlar. Bu versiyon Java 8 ve üzerinde kullanabileceğimiz Optional ve LocalDate'i de destekleyen Annotationlara sahiptir. JSR 380 hakkında daha fazla bilgi almak için bu adrese göz atabilirsiniz.&lt;/p&gt;
&lt;h3&gt;
  
  
  Dependency
&lt;/h3&gt;

&lt;p&gt;Bu özellikleri kullanmak için dependency'lerinize aşağıdaki dependency'yi eklemeniz yeterli olacaktır.&lt;br&gt;
&lt;/p&gt;

&lt;div class="highlight js-code-highlight"&gt;
&lt;pre class="highlight xml"&gt;&lt;code&gt;&lt;span class="nt"&gt;&amp;lt;dependency&amp;gt;&lt;/span&gt;
    &lt;span class="nt"&gt;&amp;lt;groupId&amp;gt;&lt;/span&gt;javax.validation&lt;span class="nt"&gt;&amp;lt;/groupId&amp;gt;&lt;/span&gt;
    &lt;span class="nt"&gt;&amp;lt;artifactId&amp;gt;&lt;/span&gt;validation-api&lt;span class="nt"&gt;&amp;lt;/artifactId&amp;gt;&lt;/span&gt;
    &lt;span class="nt"&gt;&amp;lt;version&amp;gt;&lt;/span&gt;2.0.0.Final&lt;span class="nt"&gt;&amp;lt;/version&amp;gt;&lt;/span&gt;
&lt;span class="nt"&gt;&amp;lt;/dependency&amp;gt;&lt;/span&gt;
&lt;/code&gt;&lt;/pre&gt;

&lt;/div&gt;



&lt;h3&gt;
  
  
  Gelelim Kullanımına
&lt;/h3&gt;

&lt;p&gt;&lt;a href="https://media.dev.to/dynamic/image/width=800%2Cheight=%2Cfit=scale-down%2Cgravity=auto%2Cformat=auto/https%3A%2F%2Fburakaykan.me%2Fcontent%2Fimages%2F2020%2F01%2Fusermodel.png" class="article-body-image-wrapper"&gt;&lt;img src="https://media.dev.to/dynamic/image/width=800%2Cheight=%2Cfit=scale-down%2Cgravity=auto%2Cformat=auto/https%3A%2F%2Fburakaykan.me%2Fcontent%2Fimages%2F2020%2F01%2Fusermodel.png" alt="Validation Annotation'ları"&gt;&lt;/a&gt;&lt;br&gt;
&lt;/p&gt;

&lt;div class="highlight js-code-highlight"&gt;
&lt;pre class="highlight java"&gt;&lt;code&gt;    &lt;span class="nd"&gt;@NotNull&lt;/span&gt;
    &lt;span class="nd"&gt;@NotEmpty&lt;/span&gt;
    &lt;span class="kd"&gt;private&lt;/span&gt; &lt;span class="nc"&gt;String&lt;/span&gt; &lt;span class="n"&gt;username&lt;/span&gt;&lt;span class="o"&gt;;&lt;/span&gt;
&lt;/code&gt;&lt;/pre&gt;

&lt;/div&gt;



&lt;p&gt;&lt;strong&gt;@NotNull&lt;/strong&gt; : Bu annotation'u alan property'nin &lt;em&gt;null&lt;/em&gt; olmamasını sağlar, property null olarak set edilmeye çalışıldığında buna engel olacaktır.&lt;/p&gt;

&lt;p&gt;&lt;strong&gt;@NotEmpty&lt;/strong&gt; : Özelliğin &lt;em&gt;boş(empty)&lt;/em&gt; veya &lt;em&gt;null&lt;/em&gt; olmadığını doğrular; String, Collection, Map veya Array'lere uygulanabilir.&lt;br&gt;
&lt;/p&gt;

&lt;div class="highlight js-code-highlight"&gt;
&lt;pre class="highlight java"&gt;&lt;code&gt;    &lt;span class="nd"&gt;@NotBlank&lt;/span&gt;
    &lt;span class="kd"&gt;private&lt;/span&gt; &lt;span class="nc"&gt;String&lt;/span&gt; &lt;span class="n"&gt;name&lt;/span&gt;&lt;span class="o"&gt;;&lt;/span&gt;
&lt;/code&gt;&lt;/pre&gt;

&lt;/div&gt;



&lt;p&gt;&lt;strong&gt;&lt;a class="mentioned-user" href="https://dev.to/notblank"&gt;@notblank&lt;/a&gt;&lt;/strong&gt; : Yalnızca &lt;em&gt;text&lt;/em&gt; alanlara uygulanabilir ve özelliğin &lt;em&gt;null&lt;/em&gt; olmasını ve &lt;em&gt;whitespace&lt;/em&gt; olmasını engeller.&lt;br&gt;
&lt;/p&gt;

&lt;div class="highlight js-code-highlight"&gt;
&lt;pre class="highlight java"&gt;&lt;code&gt;    &lt;span class="nd"&gt;@AssertTrue&lt;/span&gt;
    &lt;span class="kd"&gt;private&lt;/span&gt; &lt;span class="kt"&gt;boolean&lt;/span&gt; &lt;span class="n"&gt;itsTrue&lt;/span&gt;&lt;span class="o"&gt;;&lt;/span&gt;

    &lt;span class="nd"&gt;@AssertFalse&lt;/span&gt;
    &lt;span class="kd"&gt;private&lt;/span&gt; &lt;span class="kt"&gt;boolean&lt;/span&gt; &lt;span class="n"&gt;itsFalse&lt;/span&gt;&lt;span class="o"&gt;;&lt;/span&gt;
&lt;/code&gt;&lt;/pre&gt;

&lt;/div&gt;



&lt;p&gt;&lt;strong&gt;@AssertTrue&lt;/strong&gt; : Bu annotation'a sahip olan özelliğin &lt;em&gt;true&lt;/em&gt; değere olduğunu doğrular.&lt;/p&gt;

&lt;p&gt;&lt;strong&gt;@AssertFalse&lt;/strong&gt; : Bu annotation'a sahip olan özelliğin &lt;em&gt;false&lt;/em&gt; değere olduğunu doğrular.&lt;br&gt;
&lt;/p&gt;

&lt;div class="highlight js-code-highlight"&gt;
&lt;pre class="highlight java"&gt;&lt;code&gt;    &lt;span class="nd"&gt;@Email&lt;/span&gt;
    &lt;span class="kd"&gt;private&lt;/span&gt; &lt;span class="nc"&gt;String&lt;/span&gt; &lt;span class="n"&gt;email&lt;/span&gt;&lt;span class="o"&gt;;&lt;/span&gt;
&lt;/code&gt;&lt;/pre&gt;

&lt;/div&gt;



&lt;p&gt;&lt;strong&gt;@Email&lt;/strong&gt; : Bu annotation'a sahip olan özelliğin &lt;em&gt;geçerli bir e-posta formatına&lt;/em&gt; sahip olduğunu doğrular.&lt;br&gt;
&lt;/p&gt;

&lt;div class="highlight js-code-highlight"&gt;
&lt;pre class="highlight java"&gt;&lt;code&gt;    &lt;span class="nd"&gt;@Min&lt;/span&gt;&lt;span class="o"&gt;(&lt;/span&gt;&lt;span class="mi"&gt;18&lt;/span&gt;&lt;span class="o"&gt;)&lt;/span&gt;
    &lt;span class="nd"&gt;@Max&lt;/span&gt;&lt;span class="o"&gt;(&lt;/span&gt;&lt;span class="mi"&gt;99&lt;/span&gt;&lt;span class="o"&gt;)&lt;/span&gt;
    &lt;span class="kd"&gt;private&lt;/span&gt; &lt;span class="kt"&gt;int&lt;/span&gt; &lt;span class="n"&gt;age&lt;/span&gt;&lt;span class="o"&gt;;&lt;/span&gt;
&lt;/code&gt;&lt;/pre&gt;

&lt;/div&gt;



&lt;p&gt;&lt;strong&gt;&lt;a class="mentioned-user" href="https://dev.to/min"&gt;@min&lt;/a&gt;&lt;/strong&gt; - &lt;strong&gt;&lt;a class="mentioned-user" href="https://dev.to/max"&gt;@max&lt;/a&gt;&lt;/strong&gt; : Bu annotationlar property'nin &lt;em&gt;minimum değerden küçük&lt;/em&gt;, &lt;em&gt;maksimum değerden büyük&lt;/em&gt; olmamasını sağlar.&lt;br&gt;
&lt;/p&gt;

&lt;div class="highlight js-code-highlight"&gt;
&lt;pre class="highlight java"&gt;&lt;code&gt;    &lt;span class="nd"&gt;@Positive&lt;/span&gt;
    &lt;span class="kd"&gt;private&lt;/span&gt; &lt;span class="kt"&gt;int&lt;/span&gt; &lt;span class="n"&gt;positive&lt;/span&gt;&lt;span class="o"&gt;;&lt;/span&gt;

    &lt;span class="nd"&gt;@PositiveOrZero&lt;/span&gt;
    &lt;span class="kd"&gt;private&lt;/span&gt; &lt;span class="kt"&gt;int&lt;/span&gt; &lt;span class="n"&gt;positiveOrZero&lt;/span&gt;&lt;span class="o"&gt;;&lt;/span&gt;

    &lt;span class="nd"&gt;@Negative&lt;/span&gt;
    &lt;span class="kd"&gt;private&lt;/span&gt; &lt;span class="kt"&gt;int&lt;/span&gt; &lt;span class="n"&gt;negative&lt;/span&gt;&lt;span class="o"&gt;;&lt;/span&gt;

    &lt;span class="nd"&gt;@NegativeOrZero&lt;/span&gt;
    &lt;span class="kd"&gt;private&lt;/span&gt; &lt;span class="kt"&gt;double&lt;/span&gt; &lt;span class="n"&gt;negativeOrZero&lt;/span&gt;&lt;span class="o"&gt;;&lt;/span&gt;
&lt;/code&gt;&lt;/pre&gt;

&lt;/div&gt;



&lt;p&gt;&lt;strong&gt;&lt;a class="mentioned-user" href="https://dev.to/positive"&gt;@positive&lt;/a&gt;&lt;/strong&gt; : &lt;em&gt;Nümerik&lt;/em&gt; değerlere uygulanabilir değerin &lt;em&gt;pozitif&lt;/em&gt; olmasını zorunlu kılar.&lt;/p&gt;

&lt;p&gt;&lt;strong&gt;@PositiveOrZero&lt;/strong&gt; : &lt;em&gt;Nümerik&lt;/em&gt; değerlere uygulanabilir değerin &lt;em&gt;pozitif&lt;/em&gt; ya da &lt;em&gt;sıfır&lt;/em&gt; olmasını zorunlu kılar.&lt;/p&gt;

&lt;p&gt;&lt;strong&gt;&lt;a class="mentioned-user" href="https://dev.to/negative"&gt;@negative&lt;/a&gt;&lt;/strong&gt; : &lt;em&gt;Nümerik&lt;/em&gt; değerlere uygulanabilir değerin &lt;em&gt;negatif&lt;/em&gt; olmasını zorunlu kılar.&lt;/p&gt;

&lt;p&gt;&lt;strong&gt;@NegativeOrZero&lt;/strong&gt; : &lt;em&gt;Nümerik&lt;/em&gt; değerlere uygulanabilir değerin &lt;em&gt;negatif  ya da sıfır&lt;/em&gt; olmasını zorunlu kılar.&lt;br&gt;
&lt;/p&gt;

&lt;div class="highlight js-code-highlight"&gt;
&lt;pre class="highlight java"&gt;&lt;code&gt;    &lt;span class="nd"&gt;@Past&lt;/span&gt;
    &lt;span class="kd"&gt;private&lt;/span&gt; &lt;span class="nc"&gt;LocalDateTime&lt;/span&gt; &lt;span class="n"&gt;pastDate&lt;/span&gt;&lt;span class="o"&gt;;&lt;/span&gt;

    &lt;span class="nd"&gt;@PastOrPresent&lt;/span&gt;
    &lt;span class="kd"&gt;private&lt;/span&gt; &lt;span class="nc"&gt;LocalDateTime&lt;/span&gt; &lt;span class="n"&gt;pastOrPresentDate&lt;/span&gt;&lt;span class="o"&gt;;&lt;/span&gt;

    &lt;span class="nd"&gt;@Future&lt;/span&gt;
    &lt;span class="kd"&gt;private&lt;/span&gt; &lt;span class="nc"&gt;LocalDateTime&lt;/span&gt; &lt;span class="n"&gt;futureDate&lt;/span&gt;&lt;span class="o"&gt;;&lt;/span&gt;

    &lt;span class="nd"&gt;@FutureOrPresent&lt;/span&gt;
    &lt;span class="kd"&gt;private&lt;/span&gt; &lt;span class="nc"&gt;LocalDateTime&lt;/span&gt; &lt;span class="n"&gt;futureOrPresentDate&lt;/span&gt;&lt;span class="o"&gt;;&lt;/span&gt;
&lt;/code&gt;&lt;/pre&gt;

&lt;/div&gt;



&lt;p&gt;&lt;strong&gt;@Past&lt;/strong&gt; : &lt;em&gt;Tarih alanlarına&lt;/em&gt; uygulanabilir değerin &lt;em&gt;geçmiş bir tarih&lt;/em&gt; olmasını zorunlu kılar. &lt;em&gt;Java 8'de gelen Tarih tiplerine&lt;/em&gt; de uygulanabilir.&lt;/p&gt;

&lt;p&gt;&lt;strong&gt;@PastOrPresent&lt;/strong&gt; : &lt;em&gt;Tarih alanlarına&lt;/em&gt; uygulanabilir değerin &lt;em&gt;geçmiş bir tarih ya da şimdi&lt;/em&gt; olmasını zorunlu kılar. &lt;em&gt;Java 8'de gelen Tarih tiplerine&lt;/em&gt; de uygulanabilir.&lt;/p&gt;

&lt;p&gt;&lt;strong&gt;@Future&lt;/strong&gt; : &lt;em&gt;Tarih alanlarına&lt;/em&gt; uygulanabilir değerin &lt;em&gt;gelecek bir tarih&lt;/em&gt; olmasını zorunlu kılar. &lt;em&gt;Java 8'de gelen Tarih tiplerine&lt;/em&gt; de uygulanabilir.&lt;/p&gt;

&lt;p&gt;&lt;strong&gt;@FutureOrPresent&lt;/strong&gt; : &lt;em&gt;Tarih alanlarına&lt;/em&gt; uygulanabilir değerin &lt;em&gt;gelecek bir tarih ya da şimdi&lt;/em&gt; olmasını zorunlu kılar. &lt;em&gt;Java 8'de gelen Tarih tiplerine&lt;/em&gt; de uygulanabilir.&lt;/p&gt;

&lt;h3&gt;
  
  
  Annotation'lar Collection elemanlarına da uygulanabilir
&lt;/h3&gt;



&lt;div class="highlight js-code-highlight"&gt;
&lt;pre class="highlight java"&gt;&lt;code&gt;&lt;span class="nc"&gt;List&lt;/span&gt;&lt;span class="o"&gt;&amp;lt;&lt;/span&gt;&lt;span class="nd"&gt;@NotBlank&lt;/span&gt; &lt;span class="nc"&gt;String&lt;/span&gt;&lt;span class="o"&gt;&amp;gt;&lt;/span&gt; &lt;span class="n"&gt;preferences&lt;/span&gt;&lt;span class="o"&gt;;&lt;/span&gt;
&lt;/code&gt;&lt;/pre&gt;

&lt;/div&gt;



&lt;h3&gt;
  
  
  Annotation'lar için mesaj belirleme
&lt;/h3&gt;



&lt;div class="highlight js-code-highlight"&gt;
&lt;pre class="highlight java"&gt;&lt;code&gt;    &lt;span class="nd"&gt;@Email&lt;/span&gt;&lt;span class="o"&gt;(&lt;/span&gt;&lt;span class="n"&gt;message&lt;/span&gt; &lt;span class="o"&gt;=&lt;/span&gt; &lt;span class="s"&gt;"Email alanı email formatına uymalıdır"&lt;/span&gt;&lt;span class="o"&gt;)&lt;/span&gt;
    &lt;span class="kd"&gt;private&lt;/span&gt; &lt;span class="nc"&gt;String&lt;/span&gt; &lt;span class="n"&gt;email&lt;/span&gt;&lt;span class="o"&gt;;&lt;/span&gt;
&lt;/code&gt;&lt;/pre&gt;

&lt;/div&gt;



&lt;p&gt;Annotation'un içine message set edilerek gösterilecek mesaj belirlenebilir.&lt;/p&gt;

&lt;p&gt;&lt;a href="https://media.dev.to/dynamic/image/width=800%2Cheight=%2Cfit=scale-down%2Cgravity=auto%2Cformat=auto/https%3A%2F%2Fburakaykan.me%2Fcontent%2Fimages%2F2020%2F01%2FScreen-Shot-2020-01-27-at-22.48.24.png" class="article-body-image-wrapper"&gt;&lt;img src="https://media.dev.to/dynamic/image/width=800%2Cheight=%2Cfit=scale-down%2Cgravity=auto%2Cformat=auto/https%3A%2F%2Fburakaykan.me%2Fcontent%2Fimages%2F2020%2F01%2FScreen-Shot-2020-01-27-at-22.48.24.png" alt="Validation Mesajı"&gt;&lt;/a&gt;&lt;/p&gt;

&lt;h2&gt;
  
  
  Ekler
&lt;/h2&gt;

&lt;p&gt;Örnek olarak yazdığım Spring-Boot uygulamasının kodlarını &lt;a href="https://github.com/burakaykan/java-bean-validation" rel="noopener noreferrer"&gt;GitHub&lt;/a&gt; sayfamda bulabilirsiniz. Bu post orijinalde &lt;a href="https://burakaykan.me/java-validation-annotationlari/" rel="noopener noreferrer"&gt;blogumda&lt;/a&gt; yayınlanmıştır.&lt;/p&gt;

</description>
      <category>java</category>
      <category>springboot</category>
    </item>
    <item>
      <title>Point of View as Just Graduated Computer Engineer part1</title>
      <dc:creator>Burak Aykan ÜRER</dc:creator>
      <pubDate>Fri, 08 Feb 2019 23:57:34 +0000</pubDate>
      <link>https://forem.com/burakaykan/point-of-view-as-just-graduated-computer-engineer-20p6</link>
      <guid>https://forem.com/burakaykan/point-of-view-as-just-graduated-computer-engineer-20p6</guid>
      <description>&lt;p&gt;I just graduated my school and i get a job about 3 month ago. I just want to share my observations so far the check-points that i noticed so far. At first a couple weeks i tried to learn my company's technologies (Languages, Frameworks e.g.) and learn about our products. First i tried to examine project's code to understand them later watched some courses provided to me by company. Three weeks later from my starting date i assigned to fix minor bugs of a main product. It was very very frightened me this was my first professional experience as a Computer Engineer. I fixed this bugs with my teammates help (Thank you folks!). &lt;/p&gt;

&lt;p&gt;Later then that i start to read about these languages and frameworks, tried to find resources as much as i can find.&lt;/p&gt;

&lt;p&gt;The points i would like to share with you.Drum roll, please...&lt;br&gt;
I discovered that everyone has their own unique way to learning so my humble opinion please &lt;strong&gt;stop&lt;/strong&gt; and &lt;strong&gt;think&lt;/strong&gt;. &lt;/p&gt;

&lt;h4&gt;
  
  
  Which way you can learn most efficient?
&lt;/h4&gt;

&lt;h4&gt;
  
  
  Which way of learning suits for you?
&lt;/h4&gt;

&lt;p&gt;&lt;a href="https://media.dev.to/dynamic/image/width=800%2Cheight=%2Cfit=scale-down%2Cgravity=auto%2Cformat=auto/https%3A%2F%2Fimage.flaticon.com%2Ficons%2Fsvg%2F1481%2F1481514.svg" class="article-body-image-wrapper"&gt;&lt;img src="https://media.dev.to/dynamic/image/width=800%2Cheight=%2Cfit=scale-down%2Cgravity=auto%2Cformat=auto/https%3A%2F%2Fimage.flaticon.com%2Ficons%2Fsvg%2F1481%2F1481514.svg" alt="career-path"&gt;&lt;/a&gt;&lt;br&gt;
When you discovered your way you can easily learn anything you want to learn.&lt;/p&gt;

&lt;p&gt;I found my way and last a couple weeks was just great for me, learned a lot of things (This excites me a lot). &lt;/p&gt;

&lt;p&gt;Like Nietzsche's said: &lt;em&gt;“Ultimately, it is the desire, not the desired, that we love.”&lt;/em&gt;&lt;/p&gt;

&lt;p&gt;I believe in you folks.&lt;/p&gt;

&lt;p&gt;There is a idiom in Turkish: "Sürç-i lisan ettiysem affola" it means: if i misexpressed myself please forgive me. This is my first post so "sürç-i lisan ettiysem affola.&lt;/p&gt;

&lt;p&gt;Learn as much as you can and have a nice day.&lt;/p&gt;

</description>
      <category>devtips</category>
      <category>beginners</category>
      <category>career</category>
      <category>productivity</category>
    </item>
  </channel>
</rss>
